2012-08-29 121 views
7

[編輯]它似乎問題來自谷歌地圖,這需要一些時間來更新KML鏈接......我不確定,但最終它的工作原理。 .. [/編輯]重新加載頁面時KML圖層不會更新

我嵌入這個網站上現有的公共谷歌地圖:http://www.ridetheflavour.fr

這裏是公共地圖的鏈接:https://maps.google.fr/maps/ms?msa=0&msid=211027213468691902621.0004c8616605648d245b2

正如你所看到的,網站的標誌嵌入式地圖與公共Google地圖標記不匹配。看來這不是瀏覽器緩存的問題...

這裏是JavaScript片段我使用(谷歌地圖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); 

任何幫助將不勝感激。

+0

哇,我不明白這個問題的原因是什麼(地圖不匹配),但兩者在這一刻都是一樣的。也許這需要一段時間的谷歌地圖更新KML鏈接...如果有人有一個合理的解釋... – Sulliwane

回答

17

Google的服務器緩存KML內容一段時間。要強制更新呈現的KML,請在URL中添加緩存清除參數。如果我需要以編程方式執行,我通常使用日期/時間函數,或者如果它只是一次性編輯手冊?a = 0,並在我做出更改時增加該值。

像這樣的東西(如果你沒有在網址中的其他查詢參數):

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

良好的解決方法...非常感謝你! – Sulliwane

+0

完美!有時候我只是手動添加一個?ver =數字來讓它改變。此緩存會影響所有kml文件,無論它們在哪裏託管。 – efwjames

+0

其實 - 這非常簡單 - 謝謝! –

0

或者你也可以簡化甚至進一步與用途:

VAR URL =「[您kml url here] & ver ='+ Date.now();

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