2017-02-10 16 views
0

Я работаю над WebApp для мобильных пользователей, которые доходят до предопределенного местоположения и поначалу могут видеть <div> (текст, изображение или что-то еще). Итак, у меня есть предопределенное местоположение и текущее местоположение пользователя. Если оба места равны, я что-то покажу. Как я могу это сделать? Этот код не работает:Geolocation watchPosition. Как получить одно событие при достижении местоположения?

var id, ziel, options; 
//Verfolgen beginnen 
id = navigator.geolocation.watchCurrentPosition(verfolgePosition); 

function verfolgePosition(pos) { 
    var aktuell = pos.coords; 

    if (ziel.latitude === aktuell.latitude && ziel.longitude === aktuell.longitude) { 
    console.log('Sie haben Ihr Ziel erreicht'); 
    //Verfolgen beenden 
    navigator.geolocation.clearWatch(id); 
    } 
} 

ziel = { 
    latitude : 0, 
    longitude: 0 
}; 

options = { 
    enableHighAccuracy: false, 
    timeout: 5000, 
    maximumAge: 0 
}; 

, кстати, цель может быть:

ziel = { 
    latitude : 52.514971, 
    longitude: 13.369172 
}; 
+0

Нет метода 'watchCurrentPosition()'. То, что вы ищете, это '.watchPosition()' [w3] (https://dev.w3.org/geo/api/spec-source.html#watch-position)/[mdn] (https: // developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition) – Andreas

+0

Да, это правда. Я изменил его на «.watchPosition», но он работал только один раз. Возможно, потому что подвижное местоположение (мобильное устройство) меняется на быстрое, чтобы получить точную фиксированную позицию, также если я тестирую этот скрипт в том же положении. Как я могу это исправить? – kubus1234

+0

Из ссылки w3 в моем комментарии: «В шаге 5.2.2 процесса просмотра ** successCallback вызывается только ** при получении новой позиции и эта позиция ** значительно отличается от ранее сообщенной позиции **. Определение того, что представляет собой существенную разницу, остается для реализации. ** Кроме того, в шагах 5.2.2 и 5.2.3 реализации могут налагать ограничения на частоту обратных вызовов, чтобы избежать непреднамеренного потребления непропорционального количества ресурсов ** ._ " – Andreas

ответ

0

Я просто играл немного с моим кодом и активировал проект. Теперь проблема заключается в заявлении if. Я сравниваю оба значения, широту и долготу, но в результате они не равны. Что не так?

<script> 
    (function() { 

     if(!!navigator.geolocation) { 

      var map, 
       ziel, 
       options; 

      var mapOptions = { 
       zoom: 15, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 

      ziel = { 
      latitude : 52.2741, 
      longitude: 8.0317 
      }; 

      options = { 
      enableHighAccuracy: true, 
      timeout: 5000, 
      maximumAge: 0 
      }; 

      map = new google.maps.Map(document.getElementById('google_canvas'), mapOptions); 

      navigator.geolocation.watchPosition(function(position) { 

       var geolocate = new google.maps.LatLng(position.coords.latitude.toFixed(4), position.coords.longitude.toFixed(4)); 
       var ziel = new google.maps.LatLng(52.2741, 8.0317); 

       if (ziel.latitude == position.coords.latitude.toFixed(4) && ziel.longitude == position.coords.longitude.toFixed(4)) { 

       alert("I managed it"); 
       //Verfolgen beenden 
       //navigator.geolocation.clearWatch(id); 
       } 
       else { 

       alert("Fail !!! meine Position "+ geolocate +" Zielposition "+ ziel +""); 

       } 


       var infowindow = new google.maps.InfoWindow({ 
        map: map, 
        position: geolocate, 
        content: 
         '<h1>Location pinned from HTML5 Geolocation!</h1>' + 
         '<h2>Latitude: ' + position.coords.latitude.toFixed(4) + '</h2>' + 
         '<h2>Longitude: ' + position.coords.longitude.toFixed(4) + '</h2>' 
       }); 

       map.setCenter(geolocate); 

      }); 

     } else { 
      document.getElementById('google_canvas').innerHTML = 'No Geolocation Support.'; 
     } 

    })(); 

 Смежные вопросы

  • Нет связанных вопросов^_^