谷歌地图API V3: KML层未显示

Google Maps API V3: KML Layer not showing?

本文关键字:显示 KML API V3 谷歌地图      更新时间:2023-09-26

我有一个KML文件,我复制/粘贴在一起形成一个融合表,看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<Polygon><outerBoundaryIs><LinearRing><coordinates>-73.992177,40.743465,0.0 -74.008242,40.752352,0.0 -74.006533,40.756112,0.0 -73.983973,40.748934,0.0 -73.987733,40.744149,0.0 -73.992177,40.743465,0.0</coordinates></LinearRing></outerBoundaryIs></Polygon>
<Polygon><outerBoundaryIs><LinearRing><coordinates>-73.973035,40.689458,0.0 -73.989784,40.683305,0.0 -74.008242,40.686381,0.0 -73.978846,40.705181,0.0 -73.977479,40.698003,0.0 -73.973035,40.689458,0.0</coordinates></LinearRing></outerBoundaryIs></Polygon>
(...)
</Document>
</kml>

据我所知,在地图上画这些很容易

var zipoverlay = new google.maps.KmlLayer('zips.kml');
zipoverlay.setMap(map);

但显然这没有任何作用。不像我想的那么神奇吗?

谢谢!

多亏了molle博士,我们解决了这个问题。以下是我做错的地方:

  1. KML文件需要从我自己的机器外部访问。把它放在其他地方,以便地图能够抓取它
  2. KML文件的结构应该像这样:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<Polygon><outerBoundaryIs><LinearRing><coordinates>-73.992177,40.743465,0.0 -74.008242,40.752352,0.0 -74.006533,40.756112,0.0 -73.983973,40.748934,0.0 -73.987733,40.744149,0.0 -73.992177,40.743465,0.0</coordinates></LinearRing></outerBoundaryIs></Polygon></Placemark>
<Placemark><Polygon><outerBoundaryIs><LinearRing><coordinates>-73.973035,40.689458,0.0 -73.989784,40.683305,0.0 -74.008242,40.686381,0.0 -73.978846,40.705181,0.0 -73.977479,40.698003,0.0 -73.973035,40.689458,0.0</coordinates></LinearRing></outerBoundaryIs></Polygon>
</Placemark>
</Document></kml>

<Polygon/>必须是<Placemark/><MultiGeometry/>的子节点,但不能是<Document/>的子节点

我的错误是在我的服务器上启用了HTTP认证,这阻止了google请求KML文件。

我有这种问题(kml层不显示),因为url(或者可能只是文件名)太长。