0

我正在尝试使用地理位置获取当前位置的纬度和经度。直到最近,极其相似的代码还在工作,我不知道它为什么停止工作。它不再设置变量latitudelongitude。当我浏览 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 上的代码显示了奇怪的行为:

http://jsfiddle.net/JtmCV/

4

1 回答 1

1

我刚刚尝试了您的 jsfiddle,它运行良好(Win 7 上的 Chrome 19),所以我不明白为什么它会导致问题。

话虽如此,我强烈建议改用 usenavigator.geolocation.watchPosition而不是navigator.geolocation.getCurrentPosition. 我最近在地理定位系统上做了一些工作,发现getCurrentPosition可以返回不可靠的缓存位置,即使您使用 options 参数指定一个较低的maximumAge值。

我的最新版本在以下情况之一为真后停止手表:

  • 第五名已归还
  • 精度在100m以下
  • 手表开始时间超过 30 秒
于 2012-06-18T21:02:57.860 回答