2012-08-29 44 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);