KML中使用的自定义地标符号未显示在Google地图中

时间:2012-02-23 18:09:05

标签: google-maps

这让我发疯了。我一直在开发一些简单的嵌入式谷歌地图,如下所示:

http://publicworks.snoco.org/rdclosures/snocordclosuregmaps.html

此地图特别包含多个叠加层,但其中一个不再显示我开发和指定的自定义地标图标。问题KML层是这样的:

http://publicworks.snoco.org/RdClosures/SnocoRdClosures4Gmaps.kml

在过去几个月的某个时间,自定义符号停止显示并已被默认的地标符号替换。如果您在Google地球中打开KML文件,则会正常显示。 KML文件使用KmlValidator进行验证。

通过我在这里的搜索,我看到了一个关于在KML文件顶部使用定义然后在每个地标内使用的建议。我对KML进行了更改,但似乎没有任何区别(自定义图标仍未显示)。

我意识到KML文件会在Google端缓存,所以如果你查看我的javascript代码,我会使用我的KML URL路径的伪参数技巧来强制刷新图层。我要注意的另一件事是这个KML的内容不是静态的,而且经常会发生变化。

有什么想法吗?因为我很难过!

谢谢! 史蒂夫

2 个答案:

答案 0 :(得分:2)

同意fragileninja,你的服务器和谷歌之间的图像发生了什么。通常的嫌疑人是超时和404s(或其他服务器错误)。

由于KML图层实际上被栅格化为Google服务器上的图块,因此请求的超时时间相对较短,因此图块不会被发送到浏览器。如果在那段时间内没有返回图标图像,通常地图将使用默认图标进行渲染(因为它在此处执行)。但是,当我在我自己的服务器上托管图标时,我也可以毫不费力地使用图标,而且当我直接访问你的图标时,我看不到非常恶劣的加载时间,所以很奇怪。

您的服务器可能需要比平时更长的时间来专门响应Google的服务器,甚至可能会将一些HTTP错误返回给他们而不是图像。<\ n / p>

您是否可以检查服务器日志,看看是否可以看到请求以及他们是否按预期返回?

最后,如果那里没有问题,我建议在Maps API issue tracker上提交一个错误。确保从下拉列表中选择适当的模板(您可能还会考虑制作一个更简单的测试用例,例如只使用带有KmlLayer example from the docs的KML文件)。如果你最终提交了一个错误,请在此链接,我会确保它被查看。

答案 1 :(得分:1)

这与您的服务器如何提供图像有关。如果我在我的网站上托管图标,它运行正常,而您的其他KML文件正在使用maps.google.com中的图标,这也可以正常工作。

因为它适用于GE,我猜你的服务器可能发送错误的MIME类型或类似的东西。我用curl检查过,一切看起来都不错,所以我担心我不能提供更多细节。希望这有助于您找到正确的方向。祝你好运!