2011-11-23 34 views
9

HTML geolocation'da maximumAge parametresini kullanmakta zorlanıyorum. Chrome'da çalışma şekli, özelliklerle eşleşmiyor gibi görünmüyor.Chrome coğrafi konumu, maximumAge parametresini göz ardı ediyor gibi görünüyor

Ben read through the geolocation API spec yapıyorum ve ne anlayabildiğimden, maksimumAge değerini sıfır olarak ayarlarsanız, her zaman yeni bir konum almalısınız.

maximumAge nitelik uygulama Yaşları milisaniye cinsinden belirtilen zaman daha büyük olan bir önbelleğe pozisyonu kabul istekli olduğunu gösterir. MaximumAge 0 olarak ayarlanırsa, uygulama hemen yeni bir konum nesnesi edinmeye çalışmalıdır. maximumAge'ın Sonsuza ayarlanması, yaşına bakılmaksızın önbelleğe alınmış bir konum döndürmek için uygulamayı belirlemelidir. Bir uygulama değilse, yaşı belirtilen maximumAge değerinden daha büyük olan önbelleğe alınmış bir konuma sahipse, yeni bir konum nesnesi edinmelidir. watchPosition() durumunda, maximumAge, uygulama tarafından döndürülen ilk konum olan nesnesini ifade eder.

Ancak, bu benim kodudur:

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 
}); 

Ve şu görüyorum:

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

Böylece elde edilen konum ve şimdiki zaman arasındaki yarım saatlik bir fark var.

Sadece uydu saati ile yerel saat arasındaki fark olabileceğini düşündüm, ancak defalarca yenilemeye başladım ve currentDate olsa bile positionDate değişmiyor.

MaksimumAge sıfıra ayarlanmış olsa da, önbelleğe alınan konum aynı neden yeniden kullanılıyor?

Bu Chrome, BTW'de.

+0

Safari-mobile'da da benzer davranışlarda bulundum. Çok sinir bozucu. Keşke ihtiyacım olduğunda yeni bir jeo-aramayı zorlamak için bir yol biliyor olsaydım. Düşündüm ki, sizin yaptığınız gibi, maximumAge'ı sıfıra ayarlamanın bunu (bunu açıkladığı gibi) yapardı. Tahmin edemezsiniz ... – robmclarty

+0

Sadece bunun üzerinde herhangi bir kontrolün bulunmadığı anlaşılıyor: http://stackoverflow.com/questions/14814256/javascript-geolocation-caching – robmclarty

+0

Kullanım durumuna bağlı olarak bu sorun çok can sıkıcı olabilir. Ben bir bayrak ayarlayarak ve başarı geri dönüşünde iade edilen ilk pozisyon nesnesini göz ardı ederek bunu hallediyorum. – bardu

cevap

0

Bu mümkün değil. Aynı şey, webkit konuşması gibi bazı html5 etiketleriyle de olur; Bu konuda fazla kontrol sahibi değilsin, üzgünüm.

İlgili konular