7

地図上にたくさんのマーカーを描いていますが、それらが近くにあると互いに重なってしまいます。そのため、小さなズームでいくつかのマーカーを非表示にし、ユーザーがマップをズームするときにさらに多くのマーカーを表示したいと考えています。より多くのズームイン、より多くのマークのように。アクティビティとマーカーの作成のサンプル コードを次に示します。Google マップ android api v2 を使用していることがわかります。

public class MainActivity extends FragmentActivity
{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    map.getUiSettings().setMyLocationButtonEnabled(true);
    createMarkers(map);
}

private void createMarkers(GoogleMap map) {
    double initLat = 48.462740;
    double initLng = 35.039572;
    for(float i = 0; i < 2; i+=0.2) {
        LatLng pos = new LatLng(initLat + i,initLng);
        map.addMarker(new MarkerOptions()
                .position(pos)
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)));
    }
    for(float i = 0; i < 2; i+=0.2) {
        LatLng pos = new LatLng(initLat, initLng + i);
        map.addMarker(new MarkerOptions()
                .position(pos)
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)));
    }
}

私にとっては典型的なタスクのように思えますが、それでもうまくいく解決策を見つけることができませんでした。この記事https://developers.google.com/maps/articles/toomanymarkersを読みましたが、Android に実装する方法がわかりません。これを行うことができる実用的なコードを持っている人はいますか?

4

2 に答える 2

4

この問題に対する私の解決策は次のとおりです: https://github.com/Bersh/MarkersCluster

最善の解決策ではないかもしれませんが、私にとってはうまくいきます。それが役に立つことを願っています。

于 2013-02-06T15:11:34.343 に答える
3

基本的に、Android でクラスタリングを実装する方法を尋ねています。私の知る限り、これを行うために Google が提供するソリューションはありません。コメントで参照したドキュメント ( developers.google.com/maps/articles/toomanymarkers ) は、Google マップの JavaScript API を参照しています。残念ながら、クラスタリング関連のコードはまだ Android で利用できません。

マーカーをクラスター化するには、独自のアルゴリズムを考え出す必要があります。あなたが指摘した developers.google.com/maps/articles/toomanymarkers ドキュメントは、最適なアルゴリズム (グリッド ベースのクラスタリング、距離ベースのクラスタリングなど) を決定するための出発点として適しています。

もう少し簡単に実装できる別のオプション (完全ではありません) は、ズーム レベルが変更されたときにマーカー イメージを小さいアイコンに変更して、あまり重ならないようにすることです。この質問に対する私の回答を確認してください: https://stackoverflow.com/a/13976080/1103584

その答えを使用して、「ズームしきい値」をいつ超えたかを判断し、ズームアウトして特定のしきい値を超えたらマーカーを小さいものに変更し、ズームインしたときに大きな画像に変更できます。私はこれを使用します私自身のいくつかのアプリで、ズームアウトすると通常のアイコンを小さなドット画像に変更し、ズームインすると通常のアイコンに戻すトリックを行います.

于 2013-01-31T19:24:00.460 に答える