2015-06-25 35 views
0

我的web应用程序的一部分将允许用户单击地图的某个地区,并使其突出显示该页面上Google地图中的该部分。这在很多网站上都是非常标准的,但我很难掌握那里的数据量。将多边形合并到Google Maps API中3

我试图从http://global.mapit.mysociety.org/生成数据,该数据为我想要变成多边形的实际坐标提供了几个输出选项,但是导出WKT,GeoJSON或KML的值很大 - 700-900   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串...

如何做到这一点更有效,因为这是显然不是将多边形数据合并到动态地图加载中的方式吗?

+0

你输出什么样的多边形?你需要什么信息? – scaisEdge

回答

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

+0

哦太棒了!非常感谢你做的这些。我会弄清楚这是如何工作的,但'容差'确实是我所期待的。如果我没有设置,那么geojson基本上和我的'LatLng'坐标大小相同,但设置更高的容差会取出一些中间点并缩短整个字符串。再次感谢! –

相关问题