为什么我的KML文件无法在Google地图上显示?

4

有人能告诉我为什么这个kml文件无法在谷歌地图上显示吗?

我正在使用以下代码将其添加到地图对象中,这似乎对其他kml文件有效。

var kml = new google.maps.KmlLayer('http://www.emotination.com/kml/tasman.kml');
kml.setMap(map);

“Feed validator”显示它是有效的,并且不太大,以至于谷歌服务器无法解析?

地图直接缩放到海洋中!


这应该可以工作,请问您能否发布一个指向您的实时代码的链接或将其放在jFiddle中? - Mano Marks
现在似乎可以工作了,我第二天尝试再次运行它。但我仍然感到困惑,因为我没有改变任何东西。我所能想到的是,这可能与谷歌服务器缓存旧版的KML文件有关。 - kmb64
2
您是正确的,kml文件是有缓存的。您可以通过在网址中添加时间戳参数来解决这个问题(这样谷歌服务器就会将其视为不同的文件)。例如:'http://www.emotination.com/kml/tasman.kml?time='+new Date().getTime(); - Björn
请将评论的要点发布为答案,并将此问题标记为已回答。 - Sean Mickey
1个回答

8

您需要确保谷歌服务器没有显示您的kml文件的缓存副本。

一个好的方法是按照Björn在评论中建议的方式,只需在URL的末尾添加时间戳:

var kml_tasman = new google.maps.KmlLayer('http://www.emotination.com/kml/tasman.kml?time='+new Date().getTime());
kml_tasman.setMap(map);

1
4天后我发现了这篇帖子——真是救命稻草。谢谢nz_karl。 - cymorg
@cymorg,你能否请提供一下你的代码?我遇到了同样的问题。 - Aimal Khan
@aimal - 我刚刚按照Bjorn和jmb64在这个答案中的建议做了,就像这样... newkmlLayer = new google.maps.KmlLayer({ url: 'http://www.mybogussite.com/kml/mykmlfile.kml'?time=' + new Date().getTime(), preserveViewport: true, map: map }); - cymorg

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