Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图多边形过多导致iOS崩溃_Javascript_Ios_Google Maps Api 3_Polygons_Google Maps Mobile - Fatal编程技术网

Javascript 谷歌地图多边形过多导致iOS崩溃

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.

我有一张包含400多个多边形的谷歌地图,这些多边形由40000多个lat/lng坐标组成。这些都是荷兰的直辖市,结果如下:

它工作正常,在桌面计算机上以2.5MB/500Kb Gzip的速度加载有点慢,但是当在iOS设备上打开url时,它在Chrome for iOS中崩溃了Mobile Safari

我怀疑这是因为它只是太多的代码或多边形。当我只加载一半的多边形时,Mobile Safari不会崩溃

我使用以下Javasctipt加载每个多边形:

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。