138 votes

Supprimer un marqueur d'une carte GoogleMap

Dans la nouvelle API Google Maps pour Android, nous pouvons ajouter un marqueur mais il n'y a aucun moyen de l'enlever (facilement).

Ma solution consiste à conserver les marqueurs dans une carte et à redessiner la carte lorsque je veux supprimer un marqueur, mais ce n'est pas très efficace.

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);
      }
    }
  });
}

Quelqu'un a-t-il une meilleure idée ?

1voto

Naim Jamalludin Points 155

Pour ceux qui suivent l'exemple sur ce GoogleMaps - MapWithMarker (carte avec marqueur) vous pouvez retirer le marqueur en procédant ainsi

override fun onMapReady(googleMap: GoogleMap?) {
    googleMap?.apply {

        // Remove marker
        clear()

        val sydney = LatLng(-33.852, 151.211)
        addMarker(
            MarkerOptions()
                .position(sydney)
                .title("Marker in Sydney")
        )
        moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}

0voto

Essayez ceci, il met à jour l'emplacement actuel, et cela fonctionne bien.

        public void onLocationChanged(@NonNull Location location) {               
        //here we update the location on the map

        LatLng myActualLocation = new LatLng(location.getLatitude(), location.getLongitude());

        if (markerName!=null){  // marker name is declared as a gloval variable.
            markerName.remove();
        }

        markerName = mMap.addMarker(new MarkerOptions().position(myActualLocation).title("Marker Miami").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

        // mMap.addMarker(new MarkerOptions().position(myActualLocation).title("Marker Miami").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myActualLocation,18));

        }

-1voto

Si vous voulez supprimer le marqueur lorsqu'il est cliqué, essayez ceci :

mMap.setOnMarkerClickListener(this); //mMap is googleMap

   @Override
    public boolean onMarkerClick(@NonNull Marker marker) {

        marker.remove();

        return false;
    }

https://developers.google.com/maps/documentation/Android-sdk/marker

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X