16

Google マップをオーバーレイするグリッドを作成したいと考えています。グリッドは静的である必要があります。つまり、1km² のグリッドが正確に同じ場所にあり、一意の ID で識別できる必要があります。GoogleマップとPHPでこれを達成するにはどうすればよいですか?

最高、redshark1802

編集:これらのグリッドを直接操作する必要があることを忘れていました。つまり、各フィールドの色/スタイルを変更することを意味します。すでにそれを行っているサイトを見つけましたhttps://ownthisworld.com/

4

3 に答える 3

10

あなたの質問に対する答えは、Google Maps API(v3)にあります。

ここでの基本的なアプローチは次のとおりです。

  1. MapオブジェクトのgetBounds()メソッドを使用して、マップの境界を見つけます。結果はLatLngBoundsオブジェクトであり、そこから地図の角の緯度と経度の座標を抽出できます。
  2. マップの北と南、および西と東の間の距離を(キロ)メートルで計算します。この距離を使用して、描画する必要のある線の数(1kmの距離)を決定します。
  3. グリッドをPolyLinesの形で描画します。これにより、色や幅など、いくつかのオプションを設定できます。
  4. (例のように)イベントがバインドされた長方形も描画する場合は、特定のオプションを指定してRectangleを使用できます。'クリック'イベントをこれらの長方形にバインドして、それらを操作できるようにすることができます。または、マップ上でのマウスクリックの座標を使用して、クリックされた正方形を特定することもできます。

拡張情報: グリッドを描画する場所がわかっている場合は、長方形のエッジが基本的にグリッド線の線分であるため、長方形を描画する場所も知っています。では、グリッド線をどこに描くかをどうやって知るのでしょうか?標準のゼロ点(たとえば、赤道と本初子午線が交わる点)を決定し、基本的にそこからグリッド線の描画を開始すると、常にグリッド線(したがって長方形)が同じ場所に配置されます。マップの境界のビュー内にあるグリッド線のみを描画することに注意してください。このようにして、たとえば左上隅にある長方形を識別するのもかなり簡単です...常に同じ位置に配置されます。

于 2012-05-01T15:16:28.290 に答える
7

これらの例が役立つかもしれません: これは固定サイズのグリッドです - 北西緯度で配置し、高さと幅の変数を使用してサイズを調整します

これは、マップ領域をカバーするようにサイズ変更および移動するグリッドです (多かれ少なかれ)

どちらも長方形を rectArr 配列に格納するため、それにアクセスしてオプションなどを操作できます。

于 2012-05-06T13:07:07.363 に答える
2

クワッドキーが必要です。Geohashは同様のシステムを使用しています。あなたはaz曲線を書くためのL-システムを探すことができます、あるいはあなたはphpclasses.org(ヒルベルト曲線)で私のコードをつかむことができます。これがどのように機能するかについての良いチュートリアルです:http://blog.notdot.net/2009/11/Damn-Cool-Algorithms-Spatial-indexing-with-Quadtrees-and-Hilbert-Curves

于 2012-05-01T15:00:39.140 に答える