0

我正在使用带有 KML 图层的 Google Maps JavaScript API v3 来显示带有自定义标记的地图。

我的地图链接到我作为 Google 站点附件发布的 KML 文件。加载后,地图会正确显示 KML 文件中的每个 PlaceMark,但不会显示弹出气球。

很少当我单击一个图钉时,它会显示气球(5% 的时间),然后其他图钉都不起作用。当我放大和缩小我的自定义 pin 图像时,偶尔会恢复为默认 pin 图像。

我添加了 layerOptions 来明确地将 clickable 设置为 true 并将 suppressInfoWindows 设置为 false。它没有改变气球的行为。

我已经用 Chrome v19、Firefox v12 和 IE8 进行了测试。

更新1:

我在我的 KML 中发现了一个错字 (bal*l*oon)。仍然无法正常工作。有什么东西让别针有问题。

更新 2:

v3 现在正在运行。谷歌的缓存使得这很难测试。向 KML URL 添加了“?nocache=0”以防止缓存。BaloonStyle 是问题所在,但缓存导致错字仍然存在。将 KML 迁移到个人服务器。

实时 HTML 地图页面(固定)

实时 KML 下载(固定)

我的参考资料:

4

3 回答 3

3

Google is caching your KML on purpose. The workaround is to append something like the current time to the end of your URL so that it is different every time:

var kmlFile = 'http://www.myserver.com/my.kml?'+(new Date()).getTime();
var kmlLayer = new google.maps.KmlLayer(kmlFile);
kmlLayer.setMap(myMap);
于 2012-06-07T21:48:25.447 回答
1

我的问题:

  • 我的 BalloonStyle 标签中有错字
  • 我的 KML 文件的过时缓存

如果:

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

更新:

我将 KML 文件移动到我的服务器,但在第一次更改后缓存仍然过时。当我的 Google Map 对象加载 KML 覆盖时,似乎会发生缓存。我确保它不是我的系统或我的服务器缓存。

如果我对我的 KML 进行更改并且缓存没有更新,则这些引脚开始出现故障。我所有的图钉都显示在正确的位置,但其中一个图钉没有气球。改了文件名,正常!

更新 2:

我将此缓存行为报告为 Google Maps JS API 上的一个错误。

http://code.google.com/p/gmaps-api-issues/issues/detail?id=4196

结论:

我编写了 ASP.NET/C# 类来对地址进行地理编码,并在比发现此错误所需的时间更短的时间内构建 KML 文档。

停止缓存如此艰难的谷歌!

于 2012-06-07T14:49:28.037 回答
0

您的 KML 无效。 <Name>不是规范的一部分。将其更改为<name>,您应该一切顺利。

于 2012-06-06T22:33:46.313 回答