【问题标题】:How do you get lat long info using navigator.geolocation when connected via Network cable通过网线连接时,如何使用 navigator.geolocation 获取经纬度信息
【发布时间】:2010-08-23 15:14:16
【问题描述】:

navigator.geolocation.getCurrentPosition 如果我通过无线连接到互联网,则返回大约纬度/经度信息。但是,通过网络电缆连接时方法调用失败。这是设计使然还是我遗漏了什么?下面是示例 html 页面,我正在使用 Chrome 5 对其进行测试。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Geocode Test</title>
    <script type="text/javascript">
        function getGeoLocation() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function (position) {
                    alert(position);
                },
                function () {
                    alert("oops");
                });
            }
        }
    </script>
</head>
<body>
    <h1>Get Current Location</h1>
    <button id='btnGetLocation' onclick='getGeoLocation()'>Get Current Location</button>
</body>
</html>

TIA

【问题讨论】:

  • 你说的是iPhone模拟器吗?您需要在问题中提供更多详细信息,并相应地更新您的标签,以便人们了解您的问题。
  • @Jason,添加了示例 html 页面。我没有使用 iPhone 模拟器。
  • 抱歉,我的标签编辑过激了。

标签: geolocation


【解决方案1】:

Chrome 上的 Geolocation API 实现更喜欢使用 WiFi 三角测量而不是 IP 地理定位(与 Tony Miller 的回答相反),尽管我相信 Google 定位服务在必要时会使用 IP 地址,或者至少使用 IP 地址确认它的猜测。

当您通过网线连接时,您的 WiFi 是否仍在运行?通常,这些服务不需要您连接到特定的 WiFi 网络,它们只使用所有可见无线网络的完整列表。但是,如果您关闭了计算机上的 WiFi 或关闭了附近可用的无线网络,那将在很大程度上阻止 navigator.geolocation 工作。

【讨论】:

  • 感谢您的澄清。从我对 Chrome、FireFox 和 Safari 的实验中,我发现在关闭 WiFi 并连接网络电缆的情况下,对 navigator.geolocation 的调用要么返回 JSON 解析器错误(Chrome),要么返回超时(FF 和 Safari)。
  • 很好的测试@rams,谢谢!这些似乎并不是理想的失败方式......
【解决方案2】:

我没有发现地理定位能力因网络而异。有关获取地理位置数据的更全面的方法,请参阅Google Maps Geolocation Code Example。您应该做的是将无线 IP 地址与有线 IP 地址进行比较。可能正在进行一些 NAT 转换,或者无线 IP 值尚未放入您正在访问的 IP-to-geo 数据库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2011-10-11
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多