我正在尝试使用地理位置获取当前位置的纬度和经度。非常相似的代码直到最近一直在工作,我无法弄清楚为什么它停止工作。它不再设置变量纬度或经度。当我浏览js代码时,跳过了getCurrentPosition()方法,我不知道为什么。奇怪的是,如果我在getCurrentPosition()方法中放置一个警告框,它将正确获取并显示纬度和经度......我不知道为什么会这样做。
var gl;
try {
if (typeof navigator.geolocation === 'undefined'){
gl = google.gears.factory.create('beta.geolocation');
} else {
gl = navigator.geolocation;
}
} catch(e) {}
var latitude;
var longitude;
if (gl) {
gl.getCurrentPosition(
function (position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
//alert("got the lat & long - lat=" + latitude + ", lng=" + longitude);
},
function (error) {
alert("Error getting geolocation:" + error);
}
);
} else {
alert("Geolocation services are not supported by your web browser.");
}
然后我继续使用Google Maps API在地图上设置一些标记。
非常感谢,
彼得
修改
这里JSFiddle上的代码显示了奇怪的行为:
答案 0 :(得分:1)
我刚试过你的jsfiddle,它运行良好(Win 7上的Chrome 19),所以我不明白它为什么会引起问题。
话虽如此,我强烈建议您使用navigator.geolocation.watchPosition
代替navigator.geolocation.getCurrentPosition
。我最近在地理定位系统上做了一些工作,发现getCurrentPosition
可以返回不可靠的缓存位置,即使您使用options参数指定低maximumAge
值。
我的最新版本在以下情况之一成立后停止观看: