96

Google Maps APIを使用していて、マーカーを追加しました。次に、各マーカーの周囲に10マイルの半径を追加します。これは、ズーム中に適切に動作する円を意味します。どうすればいいのかわからないので、あまり一般的ではないようです。

見栄えのする例を1つ見つけました。また、GoogleLatitudeもご覧ください。そこでは、私が望むように、半径のあるマーカーを使用します。

更新: Google Latitudeは拡大縮小された画像を使用していますが、どのように機能しますか? (非推奨の機能)

4

6 に答える 6

245

Google Maps API V3 を使用して Circle オブジェクトを作成し、次に bindTo() を使用してそれをマーカーの位置に関連付けます (両方とも google.maps.MVCObject インスタンスであるため)。

// Create marker 
var marker = new google.maps.Marker({
  map: map,
  position: new google.maps.LatLng(53, -2.5),
  title: 'Some location'
});

// Add circle overlay and bind to marker
var circle = new google.maps.Circle({
  map: map,
  radius: 16093,    // 10 miles in metres
  fillColor: '#AA0000'
});
circle.bindTo('center', marker, 'position');

fillColor、strokeColor、strokeWeight などを変更することで、Google Latitude の円のように見せることができます ( full API )。

その他のソース コードとスクリーンショットの例を参照してください。

于 2010-11-25T17:21:34.077 に答える
10

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

于 2009-05-05T17:00:10.610 に答える
9

球面幾何学では、形状は点、線、およびそれらの線の間の角度によって定義されます。扱うべき基本的な値しかありません。

したがって、円 (球に投影された形状に関して) は、点を使用して近似する必要があるものです。ポイントが多いほど、円のように見えます。

そうは言っても、Googleマップが地球を平らな面に投影していることを理解してください(地球を「広げ」、「正方形」に見えるまで伸ばして平らにすると考えてください)。また、平面座標系を使用している場合は、その上に 2D オブジェクトを自由に描画できます。

つまり、Google マップ上に拡大縮小されたベクター円を描くことができます。問題は、Google マップがすぐに使用できるものではないことです (Google マップは、実用的に可能な限り GIS 値に近づけたいと考えています)。彼らは、円を近似するために使用してほしいGPolygonのみを提供します。ただし、この人物はIE では vml を使用し、他のブラウザーでは svg を使用しました (「SCALED CIRCLES」セクションを参照)。

ここで、縮尺された円の画像を使用した Google Latitude に関する質問に戻ります (これがおそらく最も役立つでしょう): 円の半径が決して変わらないことがわかっている場合 (たとえば、ある地点の周囲が常に 10 マイルである場合)、最も簡単な解決策は、画像の URL + 画像が表す GLatLngBounds であるGGroundOverlayを使用することです。次に行う必要がある作業は、半径 10 マイルを表すGLatLngBoundsを計算することだけです。それができたら、ユーザーがズームインおよびズームアウトすると、Google マップ API が画像のスケーリングを処理します。

于 2009-05-05T19:24:47.767 に答える
4

私は過去にこの問題を抱えていたので、このディスカッションをブックマークしました。

要約すると、次のことができます。

  1. この円フィルターのソース コードを見て、それをプロジェクトに組み込む方法を見つけてください。
  2. 円をシミュレートするのに十分なポイントで GPolygon を描画します。
  3. http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&long=-105.1024を変更してインポートし、KML ファイルを生成します。Google マップでは、検索ボックスに URI を貼り付けるだけで、マップに表示されます。ただし、APIを使用してどのように行うかはわかりません。
于 2009-05-05T19:59:49.367 に答える
2

API v3ソリューションについては、以下を参照してください。

http://blog.enbake.com/draw-circle-with-google-maps-api-v3

ポイントの周りに円を作成し、範囲内外のマーカーをさまざまな色で表示します。また、動的半径も計算しますが、この場合、半径は固定されているため、作業量が少なくなる可能性があります。

于 2010-11-01T10:13:50.420 に答える
2

私はまさにこれに対処するブログ記事を書きました。これは役に立つかもしれません

基本的に、正しい GLatLngBounds で GGroundOverlay を作成する必要があります。難しいのは、目的の半径に基づいて、この円の境界となるこの想像上の正方形 (GLatLngBounds) の南西隅の座標と北東隅の座標を計算することです。計算は非常に複雑ですが、ブログの getDestLatLng 関数を参照するだけでかまいません。残りはかなり簡単です。

于 2009-10-07T11:56:30.880 に答える