包含太多多边形的Google地图会导致iOS崩溃

时间:2012-07-11 09:50:32

标签: javascript ios google-maps-api-3 polygons google-maps-mobile

我有一张包含400多个多边形的Google地图,这些多边形由40.000+纬度/经度坐标组成。这些都是荷兰城市,结果可以在这里看到:http://silktool.com/maptest.php

在桌面计算机上运行正常(加载2.5MB / 500Kb gzip有点慢),但在iOS设备上打开网址时,它会破坏Mobile Safari(在Chrome for iOS中可以正常工作)。

我怀疑这是因为它只是太多的代码或多边形。当我只加载一半多边形时,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上不崩溃,并想知道如何做到这一点?

我想到了几个选项,但我不知道它们是否会起作用:

  • 使代码更高效/紧凑
  • 不要使用谷歌地图,但是例如带有平滑选项的Leaflet可以简化不同缩放级别的多边形(http://leaflet.cloudmade.com/reference.html#polyline-options)
  • 将坐标放在Javascript数组中(它们现在位于PHP数组中,并且生成了javascript)。
  • 更多选择?

我不知道选择哪个选项,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您也可以尝试使用google.maps.KmlLayer

  

您是否考虑过使用Google Maps API v3的新KmlLayer?基本上,这里发生的事情是Google充当抓取任何公开可用的KML图层的代理,并自动将其分解为图块。此平铺图层还可以响应与矢量图层非常相似的点击事件。 (link

请参阅similiar thread上的https://gis.stackexchange.com/