Kml图层在重新加载页面时不更新。

8

[编辑]看起来问题来自于谷歌地图,需要一些时间来更新KML链接...我不确定,但最终它可以正常工作...[/编辑]

我在这个网站上嵌入了一个现有的公共谷歌地图:http://www.ridetheflavour.fr

这是公共地图的链接:https://maps.google.fr/maps/ms?msa=0&msid=211027213468691902621.0004c8616605648d245b2

你会发现,网站嵌入地图的标记与公共谷歌地图上的标记不匹配。看起来这不是浏览器缓存的问题...

这是我正在使用的javascript代码片段(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);

任何帮助都将不胜感激。

哇,我根本无法确定问题(地图不匹配)的原因是什么,但目前两者是相同的。也许谷歌地图需要一些时间来更新KML链接...如果有人能给出一个合理的解释的话... - Sulliwane
2个回答

22

谷歌服务器会缓存KML内容一段时间。要强制更新渲染后的KML,请向URL添加一个缓存破坏参数。如果需要以编程方式执行此操作,我通常使用日期/时间函数;如果只是一次性编辑,则可以手动添加?a=0,并在进行更改时递增该值。

如果URL中没有其他查询参数,可以像这样:

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

1

或者您可以进一步简化,并使用:

var URL = '[您的kml网址]&ver=' + Date.now();

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接