【发布时间】:2012-02-24 16:37:23
【问题描述】:
我一定是在这里做错了,但我找不到什么...我正在为我的公司网站制作一个页面,除其他外,它根据用户的当前位置提供前往工作地点的路线。为了获得他们的位置,我使用了在 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”,然后将文件拖到浏览器中打开)
非常简单的代码,上周四 12 年 1 月 26 日它实际上运行良好。 (我知道,我知道,人们说“昨天成功了!”当他们实际上搞砸了一些事情时,但我发誓它确实做到了。)然而,从那时起,它一直给我错误代码 2,“POSITION_UNAVAILABLE”。我已经在工作网络上的工作计算机、家庭互联网连接上的工作和家庭计算机以及手机上的 wifi 热点上的工作计算机上尝试过,每次都给出错误代码 2。
我想也许我在浏览器或网络设置中弄错了一些东西(虽然我无法想象是什么),所以我尝试了下一个测试,每个人都应该能够做到:
- 访问 maps.google.com。
- 搜索“西雅图”(或其他任何位置)。
- 点击“获取路线”按钮。
- 在左侧的方向框中,“A”应显示“我的位置”,“B”应显示“西雅图”。 (如果 A 中没有显示“我的位置”,请在框中输入“m”,自动填充下拉菜单通常会将“我的位置”作为第一个选项。)
- 点击“获取路线”按钮。
- Firefox 应该会弹出一条消息,说 maps.google.com 想知道您的位置。点击“分享位置”。
- 几秒钟后,它应该会向您显示从某个地方(无论它认为您的服务器在哪里)到西雅图的路线,或者“A”框应该变为空白并显示“找不到您的位置”或类似内容朝向地图的顶部。
奇怪的是:我还没有让它在任何计算机上工作。我的工作电脑(在 FF10 和 Chrome 上)、我同事的电脑、我的家用电脑和我 GF 的工作电脑都做同样的事情;没有人能找到位置。
所以我的问题是:位置 API 是否已关闭或其他原因,还是我搞砸了?我无法在网上找到任何 API 中断的迹象,而且似乎不太可能出现中断,但如果是这样,为什么它在我尝试过的任何计算机上都不起作用?其他人可以复制这些发现或知道我做错了什么吗?
谢谢!
【问题讨论】:
标签: google-maps geolocation google-geolocation