当通过网络电缆连接时,如何使用navigator.geolocation获取lat长信息

时间:2010-08-23 15:14:16

标签: geolocation

如果我通过无线连接到互联网,

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我没有看到Geolocate依赖网络的能力有任何差异。有关获取地理位置数据的更全面方法,请参阅Google Maps Geolocation Code Example。您应该做的是将无线IP地址与有线IP地址进行比较。也许正在进行一些NAT转换,或者无线IP值尚未被放入您正在访问的IP到地理数据库中。