我有一个包含 400 多个多边形的 Google 地图,这些多边形由 40.000 多个纬度/经度坐标组成。这些都是荷兰自治市,结果可以在这里看到:http: //silktool.com/maptest.php
它在台式机上运行良好(以 2.5MB / 500Kb gzipped 加载有点慢),但是在 iOS 设备上打开 url 时,它会导致 Mobile Safari 崩溃(在 Chrome for iOS 中它可以工作)。
我怀疑这是因为它只是太多的代码或多边形。当我只加载一半的多边形时,Mobile Safari 不会崩溃。
我使用以下 Javastipt 加载每个多边形:
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)。
- 更多的选择?
我不知道该选择哪个选项,有什么想法吗?