2

近くの注目点を示すために地図上にマーカーを表示する必要があります。これらのマーカーはパブリックチャットルームをクリックして開くので、マーカーをクリックする必要なく、その部屋に入る前に各マーカーについての短いアドレス情報が表示されるはずです。私は衝突せずに可能なマーカー限り多くを示している何をしたいのかGoogleマップで衝突するマーカーを排除する方法

enter image description here

をし、アイコンを置き換える:私はその意味でマーカーアイコンを変更する場合は、以下を参照してくださいすることができますしかし、マーカーの一部が衝突する可能性がありますドットのような非常に小さなマーカー(なしアドレス情報)と、これらの衝突のもので:

enter image description here

は私が衝突を検出するために、x軸掃引アルゴリズムを実行することにより、この結果を得るために達成したが、残念ながら、マーカーの場合ユーザーが地図をスクロールした後に衝突を停止するoスクリーンから存在するか、または別のマーカーがスクリーンに入り、他のマーカーと衝突し始めるか、ユーザーがまったく新しいエリアにスクロールする。このアルゴリズムは、毎回毎回繰り返されるべきである。衝突マーカーの大半を取り除くためにmaps-utilsマーカークラスタリングを使用しますが、私はこの問題を克服するためにもっと苦労した方法論が必要です。私はquadtreeを実装することを検討しますが、それが最良の方法であるかどうかを確かめることはできません。何かアドバイス?

例:

enter image description here

答えて

0

GoogleマップのAndroidマーカークラスタリングユーティリティ https://developers.google.com/maps/documentation/android-api/utility/marker-clusteringからこれを行います。

+0

質問でそれを言及しました。私はこのようなマーカーの重複を見たくない:https://tctechcrunch2011.files.wordpress.com/2015/02/citymaps.jpg?w=687マーカーのクラスタリングは同じことをすることはできません。送信したリンクの最初の画像をご覧ください。良いクラスタがいくつかありますが、重なり合ったマーカーもあります。 –

+0

申し訳ありませんが、私は少し速くスキミングしました。それでも、クラスタリングコードを変更できると思ったでしょうか? (これはgithub上のオープンソースです)... – SteelBytes

+0

実際にこれを実行する最良の方法の1つは、最小クラスタサイズを1に設定し、マルチエレメントクラスタをドットとして指定することです。 –

1

IMHO、最良の方法は、ズームレベル、クワッドツリーと衝突検出を組み合わせることができます。したがって、このシナリオでは、

ここでは、衝突検出アルゴリズムを実行するアイテム(マーカー)のサイズを縮小するためにクワッドツリーが使用されます。マーカの近くではなく、マーカの近くでのみ関心を持つ必要があるからです。

あなたは(あなたがやったとしてだけでなく、可視光領域/境界のための)ズームレベルで項目を衝突検出した場合、マーカーは、ユーザーがスクロールした後にマップを衝突したり停止した場合、あなたは

下の関連の問題に直面することはありませんそれはスクリーンから存在するか、または別のマーカーがスクリーンに入り、他のマーカーと衝突し始めるか、ユーザーがまったく新しいエリアにスクロールします。

関連する問題