2010-09-10 5 views
5

Pracuję nad aplikacją korzystającą ze standardowego interfejsu API geolokalizacji W3C, ale nie mogę na całe życie uruchomić go w Safari na moim komputerze z systemem Windows 7 i XP . Działa dobrze na moim iPadzie i moim iPhonie. Działa również idealnie na Chrome (5, 6, 7 i wersja Canary) i Firefox (3.6). Nie mam komputera Mac, więc nie mogę go przetestować. IE nie obsługuje jeszcze geolokalizacji, więc jest objęta.Geolokalizacja nie działa w przeglądarce Safari 5.x w systemie Windows 7/XP

Utworzyłem uproszczoną wersję i hostuję ją w Google Apps Engine, dzięki czemu można rzucić okiem na kod: http://html5-geolocator.appspot.com/. Wszystkie (uproszczone) javascript znajdują się w html, więc powinieneś być w stanie kliknąć prawym przyciskiem myszy i debugować/wyświetlić źródło.

Jest to prosta konwersja przykładów na Google Map API DevGuide. Co ciekawe, przykłady hostowane przez Google również NIE DZIAŁAJĄ w Safari 5.0.x na Windows 7 (ale działają dobrze na wszystkich innych platformach, takich jak moja aplikacja), na przykład http://code.google.com/apis/maps/documentation/javascript/examples/map-geolocation.html wykazuje dokładnie ten sam problem co moja aplikacja, nie pojawia się żadna mapa, strona pozostaje tylko szara.

Przez niektóre debugowanie (alert ("Jestem tutaj") :-) wygląda na to, że w Safari wykonuje polecenie navigator.geolocation.getCurrentPosition (myCallback), ale nigdy nie osiąga wartości myCallback ... tak jakby to było nigdy nie zwraca z getCurrentPosition. Widziałem również, że jeśli zostawiam okno przeglądarki otwarte przez noc, kiedy wrócę do niego rano, pojawi się alert i mapa (choć nie zawsze). Próbowałem również dodać errorCallback navigator.geolocation.getCurrentPosition (myCallback, errorCallback), ale nigdy też tego nie robi, ponownie sugerując, że nigdy nie wraca z wywołania getCurrentPosition.

Czy ktoś ma jakieś pomysły, dlaczego tak się dzieje?

EDYTOWANIE: Po kilku testach dodałem opcję limitu czasu (navigator.geolocation.getCurrentPosition (myCallback, errorCallback, {timeout: 5000});), i rzeczywiście to limit czasu przez cały czas, bez względu na jak wysoko to ustawiłem, aby nigdy nie powracało z usługi geolokalizacji Google, ale dlaczego?

+0

Czy ktoś ma jakieś wskazówki? – mvilrokx

+0

Mogę potwierdzić dokładnie takie same wyniki. Chrome słodki, Firefox 3.5 słodki, Safari 5 bez kości. :( – ADAM

+0

Również FYI używam Snow Leopard – ADAM

Odpowiedz

3

Spróbuj włączyć Wi-Fi. Wygląda na to, że Safari korzysta z połączenia Wi-Fi do pracy. Miałem dokładnie te same problemy, zmieniłem połączenie Wi-Fi i działa idealnie.

Teraz szukam, jak to wykryć - zaktualizuję, jeśli znajdę rozwiązanie

+0

Mam swoje Wi-Fi na, cały czas – mvilrokx

+0

Ci, którzy twierdzą, że jest to duplikat innych pytań związanych z przepełnieniem stosu i że musisz włączyć Wi-Fi, są w błędzie.To działałoby, gdyby to był Safari 5 na Macu. Ale to pytanie dotyczyło Safari 5 w systemie Windows Ja też nie mogłem użyć geolokalizacji do pracy w Safari 5 na Windowsie, włączając Wifi lub w inny sposób. – progressnerd

+0

Bardzo dziwne, ale faktycznie zadziałało dla mnie, gdy włączałem moje połączenie Wi-Fi! Ale to nie jest rozwiązanie. – FoF