2012-08-29 6 views
7

[EDIT] es scheint, das Problem kommt von Google Maps, die einige Zeit braucht, um den KML-Link zu aktualisieren ... Ich bin mir nicht sicher, aber am Ende funktioniert es. .. [/ EDIT]Kml Ebenen aktualisiert nicht beim Neuladen der Seite

ich eine bestehende öffentlichen google-Karte auf dieser Webseite eingebettet: http://www.ridetheflavour.fr

Hier ist der Link von der Öffentlichkeit Karte: https://maps.google.fr/maps/ms?msa=0&msid=211027213468691902621.0004c8616605648d245b2

Wie Sie sehen können, wird der Marker der Website sehen eingebettete Karte stimmt nicht mit den öffentlichen Google Map-Markierungen überein. Es scheint, es ist nicht eine Frage der Browser-Cache ...

Hier ist die JavaScript-Snippet ich verwende (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); 

Jede Hilfe wäre sehr dankbar.

+0

Wow, ich kann nicht sagen, was der Grund des Problems (nicht übereinstimmende Karten) war, aber beide sind in diesem Moment gleich. Vielleicht dauert es eine Weile, bis Google Maps den KML-Link aktualisiert ... wenn jemand eine rationale Erklärung hat ... – Sulliwane

Antwort

17

Googles Server cachen den KML-Inhalt für einige Zeit. Um das Rendern der gerenderten KML zu erzwingen, fügen Sie der URL einen Cache-Busting-Parameter hinzu. Ich benutze normalerweise eine Funktion des Datums/der Zeit, wenn ich es programmatisch tun muss, oder wenn es nur eine einmalige Bearbeitung eines Handbuchs ist? A = 0 und inkrementiere das, wenn ich Änderungen mache.

So etwas (wenn Sie irgendwelche anderen Abfrageparameter nicht in der URL haben):

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

Gute Abhilfe ... vielen Dank !! – Sulliwane

+0

Perfekt! Manchmal füge ich einfach manuell eine ver = Zahl hinzu, um es zu ändern. Dieser Cache betrifft alle kml-Dateien, unabhängig davon, wo sie gehostet werden. – efwjames

+0

Eigentlich - das ist brilliant einfach - danke! –

0

Oder man kann es vereinfachen noch weiter und Verwendung:

var URL = ‚[Ihre kml URL hier] & ver = '+ Datum.now();

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

Verwandte Themen