Googleマップで点を中心とした半径を描く

私はGoogle Maps APIを使用しており、マーカーを追加しました。今、私は各マーカーの周りに半径10マイルを追加したいと思っています。つまり、ズーム中に適切に動作する円を追加したいのです。どのようにすればいいのかわかりませんし、一般的ではないようです。

いい感じの例を見つけましたそして、Google Latitudeも見てみてください。ここでは、私が望むように、半径のあるマーカーを使っています。

Update: Google Latitudeでは、拡大縮小された画像]2を使用していますが、これはどのように機能するのでしょうか?

これを実現する最も一般的な方法は、円をシミュレートするのに十分なポイントを持つGPolygonを描くことだと思われます。 あなたが参照した例では、この方法を使用しています。 このページに良い例があります。ソースコードのdrawCircle関数を探してみてください。

解説 (1)

球面幾何学では、形状は点、線、その線の間の角度で定義されます。このような初歩的な値を扱うことしかできません。

そのため、(球に投影された形である)円は、点を使って近似しなければならないものなのです。点が多ければ多いほど、円のように見えます。

とはいえ、グーグルマップは、「地球を平面に投影している」1ことに気付いてください(地球を「"unroll"」して、「"square"」に見えるまで引き伸ばしたり、平らにしたりしていると考えてください)。また、平面の座標系があれば、その上に2次元の物体を好きなだけ描くことができます。

言い換えれば、Googleマップ上に拡大縮小されたベクトル円を描くことができるのです。しかし、Googleマップはそれをすぐには提供してくれません(彼らは現実的に可能な限りGISの値に近づけたいと考えています)。彼らはGPolygonだけを与え、それを使って円を近似してほしいと考えています。しかし、IEではvml、他のブラウザではsvgを使ってこの人がやってくれました("SCALED CIRCLES"のセクションを参照)。

さて、縮小された円の画像を使ったGoogle Latitudeについての質問に戻りますが(これが一番役に立つでしょう)、円の半径が決して変わらないことが分かっている場合(例えば、ある地点を中心に常に10マイルである)、最も簡単な解決策はGGroundOverlayを使うことです。ここで必要な作業は、半径10マイルを表すGLatLngBoundsを作成することだけです。これができれば、google maps apiは、ユーザーがズームインやズームアウトしたときに、画像のスケーリングを処理します。

解説 (1)

私は過去にこの問題を抱えていたので、この[議論]をブックマークしました1

要約すると、以下のようになります。

1.このcircle filter'のソースコードを見て、どうやって自分のプロジェクトに組み込むかを考える。 2.円を模したGPolygonを十分な点で描く。 3.3. http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&long=105.1024を修正してKMLファイルを生成し、それをインポートする。 Googleマップでは、検索ボックスにURIを貼り付けるだけで、地図上に表示されます。 APIを使ってどのようにするのかはわかりませんが。

解説 (0)