2012-08-29 13 views
7

[EDYC] wydaje się, że problem pochodzi z map google, które trwa trochę czasu, aby zaktualizować link KML ... Nie jestem pewien, ale w końcu to działa. .. [/ EDIT]Kml warstwy nie aktualizuje się po ponownym załadowaniu strony

I osadzone istniejąca mapa google publicznej na tej stronie: http://www.ridetheflavour.fr

Oto link mapy publicznym: https://maps.google.fr/maps/ms?msa=0&msid=211027213468691902621.0004c8616605648d245b2

Jak widać, znaczniki strony internetowej na osadzona mapa nie pasuje do publicznych znaczników mapy google. Wydaje się, że nie jest to kwestia pamięci podręcznej przeglądarki ...

Oto fragment kodu JavaScript używam (Google map API V3):

var mapOptions = { 
      center: new google.maps.LatLng(24.797409,-5.449219), 
      zoom: 3, 
      mapTypeId: google.maps.MapTypeId.TERRAIN, 
      overviewMapControl: false, 
      streetViewControl: false 
     }; 
var map = new google.maps.Map(document.getElementById("map_canvas"), 
      mapOptions); 
var georssLayer = new google.maps.KmlLayer('https://maps.google.fr/maps/ms?ie=UTF8&authuser=0&msa=0&output=kml&msid=211027213468691902621.0004c8616605648d245b2'); 
georssLayer.setMap(map); 

Każda pomoc będzie mile widziana.

+0

Wow, nie mogę powiedzieć, co było przyczyną problemu (niedopasowane mapy), ale oba są w tym samym czasie. Może trzeba trochę czasu, aby mapy google zaktualizować link KML ... jeśli ktoś ma racjonalne wyjaśnienie ... – Sulliwane

Odpowiedz

17

Serwery Google buforują treść KML przez pewien okres czasu. Aby zmusić renderowany plik KML do aktualizacji, dodaj parametr pomijania pamięci podręcznej do adresu URL. Zwykle używam funkcji daty/czasu, jeśli chcę to zrobić programowo, lub jeśli jest to tylko jednorazowa edycja instrukcji a = 0 i inkrementacja tego, kiedy wprowadzam zmiany działa.

Coś jak to (jeśli nie ma żadnych innych parametrów zapytania w URL):

var URL = filename+"?dummy="+(new Date()).getTime(); 
+0

Dobre obejście ... dziękuję bardzo !! – Sulliwane

+0

Idealny! Czasami po prostu ręcznie dodajemy? Ver = liczebnik, aby go zmienić. Ta pamięć podręczna wpływa na wszystkie pliki kml, niezależnie od tego, gdzie są hostowane. – efwjames

+0

Właściwie - to genialnie proste - dzięki! –

0

Albo można uprościć jeszcze dalej i zastosowanie:

var URL = „[twoja URL kml tutaj] & ver = '+ Date.now();

var georssLayer = new google.maps.KmlLayer (URL);

Powiązane problemy