Google Maps API KML气球不可见

问题描述 投票:0回答:3

我正在使用带有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(固定)

我的推荐:

google-maps kml balloon
3个回答
3
投票

谷歌正在故意缓存您的KML。解决方法是在URL的末尾添加类似当前时间的内容,以便每次都不同:

var kmlFile = 'http://www.myserver.com/my.kml?'+(new Date()).getTime();
var kmlLayer = new google.maps.KmlLayer(kmlFile);
kmlLayer.setMap(myMap);

1
投票

我的问题:

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

如果这样做会更容易:

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

更新:

我将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这么辛苦!


0
投票

你的KML无效。 <Name>不是规范的一部分。把它换成<name>,你应该好好去。

© www.soinside.com 2019 - 2024. All rights reserved.