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
答案 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到地理数据库中。