我正在使用带有KML图层的Google Maps JavaScript API v3来显示带有自定义标记的地图。
我的地图链接到我作为Google Site附件发布的KML文件。加载后,地图会正确显示KML文件中的每个PlaceMark,但不会显示弹出框。
很少当我点击一个引脚时它显示气球(5%的时间),然后没有其他引脚工作。当我放大和缩小我的自定义图钉图像时,偶尔会恢复为默认的图钉图像。
我添加了layerOptions以显式设置clickable为true,suppressInfoWindows为false。它没有改变气球的行为。
我已经使用Chrome v19,Firefox v12和IE8进行了测试。
更新1:
我在KML中发现了一个拼写错误(bal * l * oon)。仍然没有正常工作。有些东西正在使引脚越野车。
更新2:
v3现在正在运行。谷歌的缓存使这很难测试。在KML URL中添加了“?nocache = 0”以防止缓存。 BaloonStyle是问题,但缓存导致错字仍然存在。将KML迁移到个人服务器。
我的推荐:
谷歌正在故意缓存您的KML。解决方法是在URL的末尾添加类似当前时间的内容,以便每次都不同:
var kmlFile = 'http://www.myserver.com/my.kml?'+(new Date()).getTime();
var kmlLayer = new google.maps.KmlLayer(kmlFile);
kmlLayer.setMap(myMap);
我的问题:
如果这样做会更容易:
更新:
我将KML文件移动到我的服务器,但是在第一次更改后缓存仍然过时。当我的Google地图对象加载KML叠加层时,似乎会发生缓存。我确定它不是我的系统或我的服务器缓存。
如果我更改了我的KML并且缓存没有更新,则引脚会开始出错。我的所有针脚都显示在正确的位置,但其中一个针脚没有气球。更改了文件名,工作正常!
更新2:
我将此缓存行为报告为Google Maps JS API上的错误。
http://code.google.com/p/gmaps-api-issues/issues/detail?id=4196
结论:
我编写ASP.NET / C#类来编写地址,并在比查找此错误所花费的时间更短的时间内构建KML文档。
停止缓存Google这么辛苦!
你的KML无效。 <Name>
不是规范的一部分。把它换成<name>
,你应该好好去。