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 для получения текущей позиции пользователя. Теперь я протестировал этот код, используя соединение 3G на своем Droid HTC Eris, и он дал мне местоположение в 6 милях от меня, и это нормально, я могу с этим смириться, я мог бы даже жить с немного большим количеством *. 1002 *
Тем не менее, тестирование на iPod Touch с использованием Wi-Fi, подключенного к нашему домашнему маршрутизатору, поставило нас в 147 милях от нашего текущего местоположения. Теперь, это может иметь смысл, если у нашего маршрутизатора есть какой-то странный IP-адрес или что-то в этом роде (с этим кодом на самом деле используется поиск местоположения, если он не возвращается к IP), но я тестирую геолокацию прямо из Google из Ноутбук также подключен к нашему Wi-Fi здесь, и это ставит нас менее чем в 1 миле от накладных расходов.
В какой ситуации это может произойти? Это то, с чем нам придется жить, пока геолокация не продвинется дальше? Если это так, это хорошо, я просто хочу знать, можем ли мы что-то сделать, чтобы улучшить это. 147 миль немного сумасшедшие, учитывая, что любой другой источник, который мы пробовали, ставит нас в пределах 10 макс.