javascript - HTML 5 地理定位 watchPosition

标签 javascript html geolocation

我正在尝试设置我的代码来定位 Android 手机或平板电脑上最准确的位置。由于 getCurrentPosition 没有给 GPS 足够的时间来查找位置,因此我使用 watchPosition。这很好用,但我需要允许用户停止这个 watchPostion,所以我使用clearWatch 函数。这个clearWatch功能适用于我的android手机2.2.2版本,但不适用于android平板电脑3.2.1版本。我的另一个问题是在我的 Android 手机上,一旦我停止/清除 watch 并尝试再次定位我的位置,我的手机就会振动并且浏览器会关闭。这里有什么问题呢?我也在其他手机上尝试过此操作,也遇到了同样的问题。如果有人有任何建议,我将不胜感激。下面是我正在使用的代码。

//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");
  }
}

最佳答案

您的语法不正确。 clearWatch 接受一个要取消的 watch ID 的参数。

就您而言,您应该使用 clearWatch(watchID),而不是 clearWatch()

关于javascript - HTML 5 地理定位 watchPosition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358430/

相关文章:

javascript - 如何定义从一个函数到另一个函数的变量值?

html - 使用表时,一个类是否可以有两个选择器?

java - Android webview,检测网站是否请求位置权限

mysql 一对多与纬度/经度

linux - 我在哪里? (地理位置,Emacs和Perl)

javascript - 媒体查询在 IE8 中不起作用

javascript - 没有在 Javascript 中获得正确的登录

javascript - 了解克罗克福德的 walk_the_dom ("The Good Parts")

javascript - 如何让 Highchart Gauge 在 Sencha Touch 2 中工作

滚动更改导航栏不透明度的 Javascript 使我的导航内容消失