var initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var browserSupportFlag = new Boolean(); // Try W3C Geolocation (Preferred)
if (navigator.geolocation) {
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); // THERES OUR LAT/LONG VALUES
ajaxPost(initialLocation);
},
function() {
handleNoGeolocation(browserSupportFlag);
}); // Try Google Gears Geolocation
} else if (google.gears) {
browserSupportFlag = true;
var geo = google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.latitude, position.longitude); // THERES OUR LAT/LONG VALUES
ajaxPost(initialLocation);
},
function() {
handleNoGeoLocation(browserSupportFlag);
}); // Browser doesn't support Geolocation
} else {
browserSupportFlag = false;
handleNoGeolocation(browserSupportFlag);
}
function handleNoGeolocation(errorFlag) {
if (errorFlag == true) {
initialLocation = new google.maps.LatLng(geoip_latitude(), geoip_longitude()); // THERES OUR LAT/LONG VALUES
ajaxPost(initialLocation);
navigator.notification.alert('Geolocation service failed', // message
'Geolocation Error!', // title
'OK' // buttonName
);
} else {
initialLocation = new google.maps.LatLng(geoip_latitude(), geoip_longitude()); // THERES OUR LAT/LONG VALUES
ajaxPost(initialLocation);
navigator.notification.alert("Your browser doesn't support geolocation. We've placed you in Siberia.", // message
'Browser Error!', // title
'OK' // buttonName
);
} // THERES OUR LAT/LONG VALUES
}
这是我们在 Sencha Touch 应用程序中用于获取用户当前位置的代码。现在,我在我的 Droid HTC Eris 上使用 3G 连接测试了这段代码,它给了我一个距离我 6 英里的位置,这很好,我可以忍受,我什至可以忍受更多一点。
但是,使用 Wifi 在 iPod Touch 上进行测试,连接到我们的家用路由器,它使我们距离当前位置 147 英里。现在,如果我们这里的路由器有一些奇怪的 IP 地址或类似的东西(如果它不回退到 IP,这个代码实际上用于查找位置),这可能是有道理的,但我直接从谷歌测试地理定位笔记本电脑也在这里连接到我们的 wifi,它使我们距离头顶不到 1 英里。
什么样的情况会导致这种情况发生?在地理定位进一步发展之前,这是我们必须忍受的吗?如果是这样,那很好,我只是想知道我们是否可以做些什么来改善这一点。147 英里外有点疯狂,考虑到我们尝试过的所有其他来源,我们都在 10 英里以内。