1

我有一个 KML 文件,我将其复制/粘贴在一起形成一个 fusiontable,如下所示:

<?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);

但显然这无济于事。是不是没有我想象的那么神奇?

谢谢!

4

4 回答 4

9

感谢 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>
于 2013-04-23T17:13:46.737 回答
0

A<Polygon/>必须是<Placemark/>or的孩子<MultiGeometry/>,但不是<Document/>

于 2013-04-22T21:09:05.683 回答
0

我遇到了这种问题(kml 层不显示),因为 url(或者可能只是文件名)太长了。使用较短的网址,它正在工作。

于 2018-10-18T08:00:51.110 回答
0

我的错误是在我的服务器上启用了 HTTP 身份验证,这阻止了谷歌请求 KML 文件。我猜它不是在客户端完成的。

于 2015-11-17T02:07:35.220 回答