1

Google マップ API を使用して、ユーザーが地図をクリックして場所を設定できるようにしています。ユーザーがどこをクリックしても、マーカーが配置され、非常にうまく機能します。私の問題は、ユーザーがその場所に既にマーカーがあることを視覚的に確認できるにもかかわらず、アプリケーションに重複した場所を追加していることです (データベースから既存の場所のマーカーを読み込んでいます)。

Google Maps API 内で、マーカーが既にマップ上にあるマーカーの X 距離内に配置されている場合にイベントを発生させる方法はありますか? おそらく何らかの方法で javascript で haversine アルゴリズムを使用できることはわかっていますが、クライアント側でそのような複雑さを回避したいと考えています。

4

3 に答える 3

2

距離などをさらに計算する必要のない別のアプローチ:

マップ上に配置されたすべてのマーカーについて、同じ位置に円を作成します。fillOpacityとstrokeOpacityをに設定して円を非表示にし0、ニーズに合った半径を適用します。

結果:円は表示されませんが、まだ存在しています。ユーザーが非表示の円をクリックすると、マップはクリックイベントに応答しません。

于 2013-03-20T08:54:37.463 に答える
0

そのための特定の機能はないと思います。あなたが見つける最も近いものは、関数を含むgoogle.maps.geometry.sphericalになります。computeDistanceBetween(from:LatLng, to:LatLng, radius?:number)

したがって、マップに新しいマーカーをドロップする前に、現在のマーカーと新しく要求されたマーカーの間の距離を取得してください。Google Maps API がそれを行う方法を提供したとしても、それはクライアント側にあることに注意してください。そのため、「クライアント側の複雑さ」を回避することはできません。

于 2013-03-20T05:01:39.873 に答える