【发布时间】:2012-06-18 17:01:16
【问题描述】:
我正在尝试使用地理位置获取当前位置的纬度和经度。直到最近,极其相似的代码还在工作,我不知道它为什么停止工作。它不再设置变量 latitude 或 longitude。当我浏览 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 上的代码显示了奇怪的行为:
【问题讨论】:
-
请正确缩进您的代码!这将使我们更容易跟踪,并帮助您更轻松地发现潜在问题!
-
很抱歉。现在应该更好了(只是函数名搞砸了)。
-
通常,如果在 JS 中的
alert()之后某些东西起作用,我发现它在某处表示竞争条件。你确定这个功能被跳过了吗?你是“踏入”而不是“跨过”吗? -
是的,我介入了。如果相关,我正在使用 Chrome 中的开发人员工具进行调试。
-
奇怪,我唯一能想到的是在回调执行后的某个时刻异步返回了一些东西......如果你在成功回调的主体周围包裹一个
setTimeout()怎么样?
标签: javascript google-maps-api-3 geolocation