【问题标题】:Google Maps API V3: KML Layer not showing?Google Maps API V3:KML 图层未显示?
【发布时间】:2013-04-22 18:31:08
【问题描述】:

我有一个 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);

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

谢谢!

【问题讨论】:

    标签: javascript google-maps-api-3 kml


    【解决方案1】:

    感谢 Dr.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>
    

    【讨论】:

    • 对于其他发现这一点的人来说,上面的例子有几个错误,也有一些谬误。没有必要按照建议的方式删除空格。此外,上面的示例在文档顶部有关闭标签而不是打开标签。
    【解决方案2】:

    &lt;Polygon/&gt; 必须是 &lt;Placemark/&gt;&lt;MultiGeometry/&gt; 的孩子,但不能是 &lt;Document/&gt; 的孩子

    【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2013-06-27
        • 2011-02-20
        • 1970-01-01
        • 2013-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        • 2012-05-23
        相关资源
        最近更新 更多