我正在使用带有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迁移到个人服务器。
Live HTML Map Page(已修复)
Live KML Download(已修复)
我的推荐信:
答案 0 :(得分:3)
Google正在故意缓存您的KML。解决方法是在URL的末尾添加类似当前时间的内容,以便每次都不同:
var kmlFile = 'http://www.myserver.com/my.kml?'+(new Date()).getTime();
var kmlLayer = new google.maps.KmlLayer(kmlFile);
kmlLayer.setMap(myMap);
答案 1 :(得分:1)
我的问题:
如果出现以下情况会更容易:
<强>更新强>
我将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这么难!
答案 2 :(得分:0)
您的KML无效。 <Name>
不属于规范。将其更改为<name>
,你应该好好去。