1. ホーム
  2. android

[解決済み] GoogleMapからマーカーを削除する

2022-06-07 23:19:12

質問

Android用の新しいGoogle Maps APIでは、以下のことが可能です。 マーカーを追加する を追加できますが、(簡単に) 削除する方法はありません。

私の解決策は、マップ内にマーカーを保持し、マーカーを削除したいときにマップを再描画することですが、これはあまり効率的ではありません。

private final Map<String, MarkerOptions> mMarkers = new ConcurrentHashMap<String, MarkerOptions>();

private void add(String name, LatLng ll) {
  final MarkerOptions marker = new MarkerOptions().position(ll).title(name);
  mMarkers.put(name, marker);

  runOnUiThread(new Runnable() {
    @Override
    public void run() {
      mMap.addMarker(marker);
    }
  });
}

private void remove(String name) {
  mMarkers.remove(name);

  runOnUiThread(new Runnable() {
    @Override
    public void run() {
      mMap.clear();

      for (MarkerOptions item : mMarkers.values()) {
        mMap.addMarker(item);
      }
    }
  });
}

誰かいいアイデアないですか?

どのように解決するのですか?

のメソッドシグネチャは addMarker

public final Marker addMarker (MarkerOptions options)

ですから、マーカーを GoogleMap にマーカーを追加する場合、そのマーカーのオプションを指定することで、マーカーを保存する必要があります。 Marker オブジェクトを保存する必要があります (代わりに MarkerOptions オブジェクトの代わりに) 返されます。 このオブジェクトを使用すると、後でマーカーの状態を変更することができます。 マーカーを終了するときは Marker.remove() を呼び出して、地図から削除します。

余談ですが、一時的に隠したいだけなら、マーカーを表示するかどうかを Marker.setVisible(boolean) .