Google Maps KML层未显示

时间:2019-03-15 09:13:55

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

我有以下HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <title>KML Layers</title>
    <style>
      #map {
        height: 90%;
      }
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

      function initMap() {
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 11,
          center: {lat: 41.876, lng: -87.624}
        });

        var ctaLayer = new google.maps.KmlLayer({
          url: 'http://ec2-54-198-148-171.compute-1.amazonaws.com/webapp/public/kmlfiles/LargeCoordinates.kml',
          map: map
        });
      }
    </script>
    <script async defer 
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBMtoh9P3UkoxbXndKu_HOP7KsVwTRvxGU&callback=initMap">
        </script>
  </body>
</html>

此处显示的KML-http://ec2-54-198-148-171.compute-1.amazonaws.com/webapp/public/kmlfiles/LargeCoordinates.kml未显示在地图上。

我所有其他的KML文件都可以正常运行,但不能正常运行。我相信这是因为KML文件中有很多坐标。

任何帮助解决此问题的方法,将不胜感激。

1 个答案:

答案 0 :(得分:1)

在您的第5个地标/多边形(大的)中,带有几何图形/坐标的线似乎被截断了。第一个线索是该行的末尾似乎缺少标签。当需要以</MultiGeometry>结尾时,它仅以</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>标签结尾。 仔细查看最后一组坐标,它们似乎被切除,在第二个数字的小数点后结束:-96.697594,46.

因此,您至少需要添加适当的标签来封闭该行,并可能修复最后一个坐标对(或只是删除它)。这将为您提供一个有效的KML文件,该文件应加载(只要几何图形对于Google地图而言不会太大)。您还需要检查源数据,以查看该行是否缺少其他坐标,如果存在,请弄清楚如何找回它们。

要帮助其他人解决类似问题,您知道该KML是如何生成的吗?用什么软件?也许某些东西只能处理坐标字符串中的这么多字符?