Как вы получаете скрипт Google Maps API?Датчик имеет значение true или false?У меня Safari Geolocation не работал (под Windows), пока я не изменил «sensor = false» на «sensor = true», как в примере ниже:
<script src="http://maps.googleapis.com/maps/api/js?sensor=true" type="text/javascript"></script>
И он отлично работает в любом браузере: IE9, Chrome,FF10 +, Safari (Win).
Заметил еще одну странную вещь - он работает только с Wi-Fi в Safari - если вы подключены по проводному соединению, он не будет работать и просто застрянет, пытаясь навсегда.
Итак, чтобы исправить Safari, просто добавьте следующее { maximumAge: 600000, timeout: 10000 }
для обработки тайм-аута:
// Try W3C Geolocation (Preferred)
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
handleGeolocationAcquired(position.coords.latitude, position.coords.longitude);
}, function(error) {
handleNoGeolocation();
},
{ maximumAge: 600000, timeout: 10000 });
// Try Google Gears Geolocation
} else if (google.gears) {
var geo = google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(function (position) {
handleGeolocationAcquired(position.latitude, position.longitude);
}, function () {
handleNoGeolocation();
});
}
//Cannot obtain Geo Location
else {
handleNoGeolocation();
}
Таким образом, если вы находитесь в Safari (под Windows) и подключены к проводному (=> бесконечный цикл, получающий географическое местоположение): через 10 секунд он возвращается к обработчику ошибок.Кстати - MaximumAge Параметр просто устанавливает срок действия местоположения.