从谷歌地图获取多边形

时间:2016-08-03 22:07:02

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

我有一个带有一堆多边形的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 个答案:

答案 0 :(得分:1)

使用KmlLayer放置地图时,您无法访问地图上的多边形,google.maps.KmlLayer使用基于平铺的渲染,您无法(至少目前)访问坐标除了点击之外的多边形。

但请注意,将多边形渲染为原生google.maps.Polygon对象(如第三方库所做的那样)可能会降低性能,尤其是在KML很复杂的情况下。

您可以使用第三方KML解析器(如geoxml3geoxml-v3)将多边形渲染为原生google.maps.Polygon对象,并获取其中心。这将导致复杂KML的性能问题。

example using geoxml3