2016-08-03 181 views
0

我有一堆多边形的kml文件。我设法创建一个谷歌地图,并按照文档加载kml。从谷歌地图获取多边形

(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://myurl.dev/polygons.kml', 
      map: map 
     }); 

})();  

现在,我想要检索从这个KML,以便在问,如果一个点(纬度,经度)是内一些人所有的多边形。

google.maps.geometry.poly.containsLocation(point, OnePolygonFromMyMap); 

问题是,我没有找到任何文档来获取地图包含的所有形状。这可能吗?

回答

1

当您使用KmlLayer放置地图时,您不能访问地图上的多边形,google.maps.KmlLayer使用基于图块的渲染,除了点击之外,您不能(至少现在)访问多边形的坐标。

但请注意,将多边形渲染为原生的google.maps.Polygon对象(如第三方库一样)可能会导致性能损失,尤其是在您的KML很复杂时。

您可以使用像geoxml3geoxml-v3这样的第三方KML解析器将多边形渲染为原生的google.maps.Polygon对象,并获得它们的中心。这会对复杂的KML带来性能问题。

example using geoxml3