Javascript 谷歌地图多边形过多导致iOS崩溃
我有一张包含400多个多边形的谷歌地图,这些多边形由40000多个lat/lng坐标组成。这些都是荷兰的直辖市,结果如下: 它工作正常,在桌面计算机上以2.5MB/500Kb Gzip的速度加载有点慢,但是当在iOS设备上打开url时,它在Chrome for iOS中崩溃了Mobile Safari 我怀疑这是因为它只是太多的代码或多边形。当我只加载一半的多边形时,Mobile Safari不会崩溃 我使用以下Javasctipt加载每个多边形:Javascript 谷歌地图多边形过多导致iOS崩溃,javascript,ios,google-maps-api-3,polygons,google-maps-mobile,Javascript,Ios,Google Maps Api 3,Polygons,Google Maps Mobile,我有一张包含400多个多边形的谷歌地图,这些多边形由40000多个lat/lng坐标组成。这些都是荷兰的直辖市,结果如下: 它工作正常,在桌面计算机上以2.5MB/500Kb Gzip的速度加载有点慢,但是当在iOS设备上打开url时,它在Chrome for iOS中崩溃了Mobile Safari 我怀疑这是因为它只是太多的代码或多边形。当我只加载一半的多边形时,Mobile Safari不会崩溃 我使用以下Javasctipt加载每个多边形: var city1 = new google.
var city1 = new google.maps.Polygon({
paths: [
new google.maps.LatLng(53.0873209365,6.79015076682),
…many many latlng coordinates…
new google.maps.LatLng(53.0716361297,6.81423099069),
new google.maps.LatLng(53.0873209365,6.79015076682)
],
strokeColor: "#fff",
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: "rgb(60,255,160)",
fillOpacity: 0.7
});
var city2 = new google.maps.Polygon({
paths: [
new google.maps.LatLng(53.0873209365,6.79015076682),
…many many latlng coordinates…
new google.maps.LatLng(53.0716361297,6.81423099069),
new google.maps.LatLng(53.0873209365,6.79015076682)
],
strokeColor: "#fff",
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: "rgb(60,255,160)",
fillOpacity: 0.7
});
我想让代码不会在iOS上崩溃,我想知道如何做到这一点
我考虑过几种选择,但我不知道它们是否有效:
使代码更加高效/紧凑
不要使用谷歌地图,但例如带有平滑选项的传单,可以简化不同缩放级别上的多边形http://leaflet.cloudmade.com/reference.htmlpolyline-options
将坐标放在一个Javascript数组中,它们现在在一个PHP数组中,Javascript就是用这个数组生成的。
还有其他选择吗?
我不知道该选哪个,有什么想法吗 您也可以尝试使用
您是否考虑过使用Google Maps API v3的新Kmlayer?本质上,这里发生的事情是谷歌作为一个代理来抓取任何公开可用的KML层,并自动将其拆分为瓷砖。该平铺层还可以响应与向量层类似的单击事件
请参阅。也许您应该尝试在服务器端渲染此层,例如?谢谢!KML层似乎是一个不错的选择。我之前测试过这个,但是感觉你不能设计KML的形状。但是,这在KML文件中是可能的。你也可以在谷歌地图我的位置工具中托管和编辑KML。