2012-04-28 16 views
15

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

最高

、 redshark1802

編集:各フィールドの色/スタイルを変えることを意味し、私はdirecltyこれらのグリッドと対話する必要があることに言及し忘れました。 すでにサイトを見つけましたhttps://ownthisworld.com/

答えて

9

ご質問に対する回答は、Google Maps API (v3)に記載されています。

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

  1. Map objectののgetBounds()メソッドを使用してマップの境界を探します。結果はLatLngBounds objectで、マップの隅の緯度と経度の座標を抽出できます。
  2. Compute the distance(地図上の北と南、西と東の間の(キロ)メートル)。この距離を使用して、描画する線の数(1kmの距離)を決定します。
  3. グリッドをPolyLinesの形で描画します。これにより、色や幅など、いくつかの数値が設定されます(options)。
  4. (例のように)イベントにバインドされた四角形を描画する場合は、optionsRectangleを使用できます。これらの四角形に「クリック」イベントをバインドして、それらのイベントと対話することができます。または、地図上でマウスのクリック座標を使用して、クリックした四角形を特定することができます。

拡張情報:あなたは、グリッドを描画する場所を知っていれば が、あなたはまた、矩形のエッジは基本的にグリッド線のラインセグメントであるため、四角形を描画する場所を知っています。では、グリッド線をどこに描画するかをどのように知っていますか?標準的なゼロ点(赤道と子午線が合う点など)を決め、基本的にそこからグリッド線を描き始めると、常に同じ場所にグリッド線(したがって長方形)が配置されます。マップの境界線内にあるグリッド線のみを描画します。 この方法では、たとえば左上隅などで矩形を識別することもかなり簡単です...常に同じ位置に配置されます。

+0

これまでのところ、ありがとうございますが、描画する四角形が毎回同じ場所にあることを確認するにはどうすればよいですか? – redshark1802

+0

追加情報を追加しました。基本的な考え方:標準ゼロ点を決定する。 – dennisg

+0

@Chibox Correct、OPは、ビューポート内のグリッドオーバーレイを描画できるように、ビューポートのLatLngBoundsObjectを必要とします。ユーザーが地図をパ​​ンまたはズームするたびに、オーバーレイを再描画する必要があります。私はそれがどのように問題を引き起こすのか見ていないのですか? – dennisg

6

多分これらの実施例は役立つ: thisは、固定サイズのグリッドである - それは高さと幅の変数

thisを使用してサイズを変更し、マップ領域をカバーするように移動するグリッドであるNW緯度経度およびサイズでそれを配置(多かれ少なかれ)

rectArr配列に長方形が格納されているため、アクセスすることでオプションなどを操作できます。

関連する問題