HTML 5 Geolocation watchPosition - PullRequest
       1

HTML 5 Geolocation watchPosition

0 голосов
/ 02 декабря 2011

Я пытаюсь настроить свой код, чтобы найти наиболее точную позицию на телефоне или планшете Android. Так как getCurrentPosition не дает достаточно времени для GPS, чтобы найти местоположение, я использую watchPosition. Это прекрасно работает, но мне нужно позволить пользователю остановить этот watchPostion, поэтому я использую функцию clearWatch. Эта функция clearWatch работает на моем Android версии 2.2.2 телефона, но не на Android версии 3.2.1 планшета. Другая проблема связана с моим телефоном Android, когда я останавливаюсь / сбрасываю часы и пытаюсь определить свою позицию снова, мой телефон вибрирует и браузер закрывается. В чем здесь проблема? Я пробовал это на других телефонах, и у меня такая же проблема. Если у кого-то есть какие-либо предложения, я был бы очень признателен. Ниже приведен код, который я использую.

//function to locate using GPS
function ShowMyLocation(){
  if (navigator.geolocation) {
    ShowProgressIndicator('map');
    watchID = navigator.geolocation.watchPosition(function(position){
      var mapPoint = esri.geometry.geographicToWebMercator(new esri.geometry.Point(position.coords.longitude, position.coords.latitude, new esri.SpatialReference({
        wkid: 4326
      })));
      var graphicCollection = esri.geometry.geographicToWebMercator(new esri.geometry.Multipoint(new esri.SpatialReference({
        wkid: 4326
      })));
      graphicCollection.addPoint(mapPoint);
      geometryService.project([graphicCollection], map.spatialReference, function(newPointCollection){
        HideProgressIndicator();
        if (!map.getLayer(baseMapLayerCollection[0].Key).fullExtent.contains(mapPoint)) {
          alert('Data not available for the specified address.');
          return;
        }
        mapPoint = newPointCollection[0].getPoint(0);
        AddServiceRequest(mapPoint);
      });
    }, function(error){
      HideProgressIndicator();
      switch (error.code) {
        case error.TIMEOUT:
                alert('Timeout');
                break;
        case error.POSITION_UNAVAILABLE:
          alert('Position unavailable');
          break;
        case error.PERMISSION_DENIED:
          alert('Permission denied');
          break;
        case error.UNKNOWN_ERROR:
          alert('Unknown error');
          break;
      }
    }, {
      timeout: 5000,
      maximumAge: 90000,
      enableHighAccuracy: true      
    });

  }
}
 function clearWatch(){
   // Cancel the updates when the user clicks a button.
  if (watchID > 0) {
    navigator.geolocation.clearWatch();
    alert("Stop tracking location");
  }
}

1 Ответ

3 голосов
/ 20 октября 2012

Ваш синтаксис неверен.clearWatch принимает аргумент, для которого необходимо отменить идентификатор часов.

В вашем случае вы должны иметь clearWatch(watchID), а не clearWatch().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...