2011-11-23 12 views
9

Mam problem z użyciem parametru maximumAge w geolokalizacji HTML. Sposób, w jaki działa w Chrome, nie pasuje do specyfikacji.Geolokalizacja Chrome wydaje się ignorować parametr maximumAge

Mam read through the geolocation API spec i z tego, co rozumiem, jeśli ustawisz maksymalną wartość na zero, zawsze powinieneś uzyskać świeżą pozycję.

Atrybut maximumAge wskazuje, że aplikacja jest gotowa do przyjąć pozycję pamięci podręcznej, którego wiek nie jest większa niż określona czas w milisekundach. Jeśli maximumAge jest ustawione na 0, implementacja musi natychmiast podjąć próbę pozyskania nowego obiektu położenia. Ustawienie maksymalnej wartości Age na nieskończoność musi określić implementację, aby zwrócić buforowaną pozycję , niezależnie od jej wieku. Jeśli implementacja nie ma pozycji buforowanej dostępnej, której wiek nie jest większy niż określony maksymalny Atrybut , musi on uzyskać nowy obiekt położenia. W przypadku przypadku pozycji watchPosition() maksymalna liczbaAge odnosi się do pierwszej pozycji zwróconej przez implementację obiektu .

Jednak jest to mój kod:

function gpsSuccess(pos) { 
    var positionDate = new Date(pos.timestamp); 
    var currentDate = new Date(); 
    console.log(positionDate.toLocaleString(), currentDate.toLocaleString()); 
} 
watchId = navigator.geolocation.watchPosition(gpsSuccess, 
    gpsFail, { 
     enableHighAccuracy: true, 
     maximumAge: 0, 
     timeout: 27000 
}); 

I widzę, co następuje:

Wed Nov 23 2011 10:25:43 GMT+0000 (GMT), Wed Nov 23 2011 10:52:16 GMT+0000 (GMT) 

Więc to pół godziny różnicy pomiędzy otrzymanym pozycji i aktualnego czasu.

Pomyślałem, że może to być tylko różnica między czasem satelitarnym a czasem lokalnym, ale od czasu do czasu wielokrotnie się odświeżam, a wartość positionDate się nie zmienia, nawet jeśli obecna jest.

Dlaczego ta sama, buforowana pozycja jest ponownie używana, mimo że wartość maksymalna jest ustawiona na zero?

To jest w Chrome, BTW.

+0

Zauważam podobne zachowanie również w Safari-mobile. Bardzo frustrujące. Żałuję, że nie wiem, jak wymusić świeże wyszukiwanie geograficzne, kiedy go potrzebuję. Myślałem, podobnie jak ty, że ustawienie maximumAge na zero może to zrobić (jak wyjaśnia specyfikacja). Zgadnij, nie ... – robmclarty

+0

Wygląda na to, że może po prostu nie mieć kontroli nad tym: http://stackoverflow.com/questions/14814256/javascript-geolocation-caching – robmclarty

+0

W zależności od przypadku użycia ten problem może być bardzo denerwujący. Rozumiem, ustawiając flagę i ignorując obiekt pierwszej pozycji zwróconej w powodzeniu zwrotnym sukcesu. – bardu

Odpowiedz

0

To niemożliwe. To samo dzieje się z niektórymi znacznikami html5, takimi jak mowę w webkitach, których nie można aktywować za pomocą kodu. Nie masz nad tym kontroli, przepraszam.

Powiązane problemy