我正在尝试设置代码以在android手机或平板电脑上定位最准确的位置。由于getCurrentPosition没有为GPS提供足够的时间来查找位置,因此我正在使用watchPosition。这很好用,但我需要允许用户停止此watchPostion,因此我正在使用clearWatch函数。这个clearWatch功能适用于我的Android手机2.2.2版本,但不适用于Android平板电脑3.2.1版本。我的另一个问题是在我的Android手机上,一旦我停止/ clearwatch,然后再次尝试定位自己的位置,我的手机就会振动并且浏览器关闭。这是什么问题?我也在其他手机上尝试过,并且遇到了同样的问题。如果有人有任何建议,我将不胜感激。下面是我正在使用的代码。
//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
带有要取消其手表ID的参数。
在您的情况下,您应该有clearWatch(watchID)
,而不是clearWatch()
。
关于javascript - HTML 5地理位置watchPosition,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8358430/