谷歌地图api kml填充错误

Google maps api kml filling incorrect

本文关键字:错误 填充 kml api 谷歌地图      更新时间:2023-09-26

我有一个简单的HTML和简单的KML文件,我想在谷歌地图中显示。问题是单个多边形的填充不能正确工作。如果你看下面的例子,你可以看到多边形是在右边填充的(这对我的框架来说是正确的)。放大一个水平和填充翻转到另一边。再放大一下,它就倒过来了。缩小一次,它会翻转,缩小两次,它会回到正确的填充。当你不断缩小时,它仍然是正确的。

我在其他地方读到过使用geoxml3来解析KML,而不是让Google来做。主干下载不支持多边形,但我(认为)我下载了它的分支版本。基于此,它似乎正在解析KML并创建google.maps.Polyline对象。我的问题是,我需要显示数百(而不是数千)个多边形,并且转换KML的加载时间将受到性能限制。更不用说,我希望有谷歌的缩放级别简化的KML文件。

任何想法吗?这个已经工作了好几年了,几周前才坏掉。测试环境包括Chromium 37 (linux)、Firefox 38 (linux)、Chrome 43 (Win7)、Firefox 37 (Win7)和IE11 (Win7)。我唯一的其他选择是尝试使用google.maps.ImageMapType()与google.maps.overlayMapTypes(),这将需要相当多的重新设计?

谢谢!

HTML页面:

<html>
<head>
<style>
   #mapCanvas {height: 600px;width: 600px;}
</style>
</head>
<body>
<div id="mapCanvas"></div>
<script src="http://maps.google.com/maps/api/js?v=3.&libraries=geometry,drawing,places&sensor=false"/></script>
<script>
    var googleMap = new google.maps.Map(document.getElementById('mapCanvas'), 
          maxZoom: 20,
          minZoom: 4,
          zoom: 17,
          panControl: true,
          zoomControl: true,
          scaleControl: true,
          streetViewControl: true,
          tilt: 0,
          center: new google.maps.LatLng(39.77420517, -94.83232857)
    });
    var kml = new google.maps.KmlLayer('http://itic.occinc.com/new5.kml', 
        preserveViewport: true,
        suppressInfoWindows:true,
        clickable: false,
        map: googleMap
    });
</script>
</body>
<html>

和KML(以防它从我的服务器上消失):

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>District Polygon Folder&lt;/name>
  <open>1&lt;/open>
  <description>&lt;/description>
  <Placemark>
    <name>Folder object 2 (Polygon)&lt;/name>
    <Polygon>
      <altitudeMode>clampToGround&lt;/altitudeMode>
      <outerBoundaryIs>
        <LinearRing>
          <coordinates>
            -94.84433855, 39.53505883
            -94.83010566, 39.82194139
            -94.59858395, 39.8204777
            -94.59383965, 39.53213146
            -94.84433855, 39.53505883
          </coordinates>
        </LinearRing>
      </outerBoundaryIs>
    </Polygon>
  </Placemark>
</Folder>
</kml>

Google KML渲染器有一个bug。

发行8015

您可能在KML中设置了不正确的坐标格式。以下是谷歌文档的节选(向上滚动):

四个或多个元组,每个元组由的浮点值组成经度、纬度和海拔。海拔分量是可选的。不要在元组中包含空格。最后一个坐标必须是和第一个坐标一样。坐标用十进制表示度。

所以逗号后面的空格可能会给你带来麻烦。

另外,我相信google地图显示的kml文件有大小限制。因此,您可能会在显示数千个形状时遇到麻烦。