Google Maps API KML气球不可见

时间:2012-06-06 21:15:08

标签: google-maps kml balloon

我正在使用带有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(已修复)

我的推荐信:

3 个答案:

答案 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)

我的问题:

  • 我的BalloonStyle标签中的拼写错误
  • 我的KML文件的陈旧缓存

如果出现以下情况会更容易:

  • Google Maps JS在解析KML时抛出错误
  • 谷歌缓存速度相当快
  • 我开始在服务器上进行测试

<强>更新

我将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>,你应该好好去。