1

400 以上のポリゴンを含む Google マップがあります。これらのポリゴンは 40.000 以上の緯度/経度座標で構成されています。これらはすべてオランダの自治体で、結果はここで見ることができます: http://silktool.com/maptest.php

デスクトップ マシンでは正常に動作します (2.5MB / 500Kb gzip でロードするのは少し遅いです) が、iOS デバイスで URL を開くと 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 でクラッシュしないようにしたいのですが、どうすればよいのでしょうか?

いくつかのオプションを考えましたが、それらが機能するかどうかはわかりません:

  • コードをより効率的/コンパクトにする
  • Google マップは使用しませんが、たとえば、さまざまなズーム レベルでポリゴンを単純化するスムージング オプションを備えたリーフレット (http://leaflet.cloudmade.com/reference.html#polyline-options)
  • 座標を Javascript 配列に入れます (それらは現在 PHP 配列にあり、JavaScript はこれで生成されます)。
  • より多くのオプション?

どのオプションを選択すればよいかわかりません。アイデアはありますか?

4

1 に答える 1

0

google.maps.KmlLayerを使用することもできます。

Google Maps API v3 の新しい KmlLayer の使用を検討しましたか? 基本的にここで起こっていることは、公開されている KML レイヤーを取得するためのプロキシとして Google が機能し、それを自動的にタイルに分割することです。このタイル レイヤーは、ベクター レイヤーと非常によく似た方法でクリック イベントに応答することもできます。(リンク)

https://gis.stackexchange.com/の同様のスレッドを参照してください。

于 2012-07-11T10:16:09.860 に答える