我必须在这里做错事,但我找不到......我正在为我的公司网站制作一个页面,除其他外,它根据用户的当前位置提供到工作地点的路线。为了获得他们的位置,我正在使用Firefox中实现的Geolocation API(我正在使用FF9和现在的FF10进行测试)。目前我正在使用Wikipedia article中的示例代码进行测试:
<html>
<head>
<title>Geolocation Test</title>
<script type='text/javascript'>
var gl;
function displayPosition(position) {
var p = document.getElementById("p");
p.innerHTML = "<table border='1'><tr><th>Timestamp</th><td>" + position.timestamp +
"<tr><th>Latitude (WGS84)</th><td>" + position.coords.latitude + " deg</td></tr>" +
"<tr><th>Longitude (WGS84)</th><td>" + position.coords.longitude + " deg</td></tr></table>";
}
function displayError(positionError) {
alert("error " + positionError.code);
}
try {
if (typeof navigator.geolocation === 'undefined'){
gl = google.gears.factory.create('beta.geolocation');
} else {
gl = navigator.geolocation;
}
} catch(e) {}
if (gl) {
gl.getCurrentPosition(displayPosition, displayError);
} else {
alert("Geolocation services are not supported by your web browser.");
}
</script>
<body>
<p id='p'></p>
</body>
</html>
(将其复制/粘贴到文本编辑器中,另存为“whatever.html”,然后将文件拖到浏览器中将其打开)
非常简单的代码,它实际上在上周四,01/26/12工作正常。 (我知道,我知道,人们说“昨天工作了!”当他们真的搞砸了,但我发誓它确实做了。)从那以后,它一直在给我错误代码2,“POSITION_UNAVAILABLE”。我已经在我的工作网络上使用我的工作计算机,在我的家庭互联网连接上使用我的工作和家用计算机,以及通过手机在wifi热点上使用我的工作计算机,并且每次都提供错误代码2。
我想也许我会在我的浏览器或网络设置或其他东西(虽然我无法想象是什么)中某种方式搞砸了,所以我尝试了下一个测试,每个人都应该能够做到:
这就是奇怪的事情:我从来没有在任何计算机上使用它。我的工作电脑(在FF10和Chrome上),我的同事的电脑,我的家用电脑和我的GF的工作电脑都做同样的事情;没有人能找到位置。
所以我的问题是:位置API是关闭还是什么,或者我搞砸了什么?我无法在网上找到任何关于API中断的迹象,看起来中断是不太可能的,但如果是这样,为什么它在我尝试过的任何计算机上都不起作用?任何人都可以复制这些发现或知道我做错了吗?
谢谢!
答案 0 :(得分:1)
您的脚本运行正常,Google地图中的位置功能也是如此(FF9.0.1)
你在哪儿? (我的意思是身体上的)如果你在某个偏远的地方,谷歌可能无法计算你的位置!在一些大城市试试吧......另一种可能是您无法访问Google的位置服务器,就好像您的ISP阻止了它...
答案 1 :(得分:0)
您的脚本似乎在Chrome中运行,但在FF中运行。我在FF中遇到的错误是位置不可用,这意味着FF的位置服务可能无法访问我的wifi网络。我假设您收到的错误是警报中的错误2?
如果你使用Firebug,你可以在第15行设置一个停止点。当它停止时,单击右侧Watch面板中的positionError并查看代码是什么。我读:代码2转换为不可用。
我建议你有一些其他代码来处理这个实例。