从谷歌地图获取多边形

Posted

技术标签:

【中文标题】从谷歌地图获取多边形【英文标题】:Get polygons from google map 【发布时间】:2016-08-03 22:07:02 【问题描述】:

我有一个包含一堆多边形的 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 很复杂的情况下。

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

example using geoxml3

【讨论】:

以上是关于从谷歌地图获取多边形的主要内容,如果未能解决你的问题,请参考以下文章

从谷歌地图获取纬度和经度

如何从谷歌地图标记中获取视图?

使用json而不是Geocoder从谷歌地图获取位置地址

从谷歌地图的后端获取数据

html 从谷歌地图获取经度和纬度

从谷歌地图 url ftid (hex) 获取纬度/经度