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以内。
我唯一能想到的是,谷歌在自己的数据库中有一些更正列表。可能发生的情况是,你的ip注册到了距离你147英里的holdco。例如,如果谁是我的IP,它就会注册到离我大约50英里远的一家控股公司。未经更正的数据库(比如你通常在网上购买的数据库(显示我在那个城镇。谷歌,不管是谁。