1

Lat/Lngポイントを20メートル×20メートルの長方形でラップする方法を理解するのに苦労しています。

使用事例:

> Click on a marker on the Google map
< Infowindow opens
> Click a button called 'Wrap' on the Infowindow
< Automatically create a 20x20m box with the marker dead center

マップ上に長方形(むしろ正方形)を作成することに問題はありません。Lat/Lngで正方形の境界を計算する方法を知る必要があります。

通常のグリッドでは、次の方法でNWポイントとSEポイントを取得します。

marker_nw_y = marker_y + 10 (meters)
marker_nw_x = marker_x - 10
marker_se_y = marker_y - 10
marker_se_x = marker_x + 10

そこからグラフィックの正方形などを作成できます。しかし、Lat / Lngを使用すると、2点間の次数の変更が場所によって異なるため、より複雑になります。

どうすればこれを行うことができますか?半正矢関数を操作しますか?「距離」を解く代わりに、座標の1つを並べ替えて解く必要がありますが、その式を並べ替えるのは難しく、結果が正しいかどうかわかりません。

4

2 に答える 2

1

この質問には、探しているものを達成できるコードが含まれていると思います。

于 2012-11-08T16:33:30.187 に答える
0

Google Maps API v3 に移植した Mike Williams の eshapes ライブラリを使用して、「半径」が 20*sqrt(2)/2 メートルの正方形を作成します。

Mike Williams の eshapes ライブラリの私のポートを使用した

クリック リスナーは次のようになります。

google.maps.event.addListener(map, "click", function(evt) {
  var marker = new google.maps.Marker({ position: evt.latLng, map: map});
  var square = google.maps.Polyline.RegularPoly(evt.latLng,20*Math.sqrt(2)/2,4,0,"#ff0000",1,1);
  square.setMap(map);
});

実施例

Kelvin Mackay からのリンクの代替回答に基づくより単純な作業例

于 2012-11-08T17:31:28.287 に答える