将多边形合并到Google Maps API 3中

时间:2015-06-25 05:12:19

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

我的部分网络应用程序将允许用户点击地图的某个区域,并让它突出显示我在页面上的Google地图中的该部分。这在许多网站上都很标准,但是我很难掌握那里的数据量。

我正在尝试从http://global.mapit.mysociety.org/生成数据,这为我想要变成多边形的实际坐标提供了几个输出选项,但是导出WKT,GeoJSON或KML是巨大的 - 700-900对于EACH实例的KB,我不明白该网站如何在不加载此数据的情况下合并这些多边形(Chrome不会显示任何超过50 KB的项目。)

我现在在做什么:

我下载了一些WKT文件,然后使用PHP将其转换为javascript字符串,以便:

var coordinates = [
new google.maps.LatLng(1.1, 1.2),
...
new google.maps.LatLng(1.1, 1.2)
];

我用大约10个地点做了这个,保存了我的文件,它是9 MB - 所有来自这些超长的coordinates字符串......

如何更有效地完成此操作,因为这显然不是将多边形数据合并到动态地图加载中的方法?

1 个答案:

答案 0 :(得分:1)

不要在服务器端翻译它,字符串new google.maps.LatLng会炸毁你的文件。

当您使用例如geoJSON您可以通过loadGeoJson加载多边形。

链接页面使用geoJSON绘制多边形(例如http://global.mapit.mysociety.org/area/686972.html加载这些数据:http://global.mapit.mysociety.org/area/686972.geojson?simplify_tolerance=0.0001 ~100KB)

另一种选择是在服务器端对每个单一多边形(折线)进行编码,并通过JS重新组装/解码多边形。 有关详细信息,请参阅https://developers.google.com/maps/documentation/utilities/polylinealgorithmhttps://developers.google.com/maps/documentation/javascript/reference#encoding