0

J'utilise le code ci-dessous pour vérifier l'emplacement actuel de l'appareil. et chaque fois qu'il change ou actualise l'emplacement, il ajoute un marqueur sans enlever le dernier. comment puis-je supprimer le marqueur précédent.Lorsque mon emplacement change, il ajoute un autre marqueur mais ne supprime pas le précédent

if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { 
      @Override 
      public void onLocationChanged(Location location) { 
       double latitude = location.getLatitude(); 
       double longtitude = location.getLongitude(); 
       LatLng latLng = new LatLng(latitude, longtitude); 
       mMap.addMarker(new MarkerOptions().position(latLng).title("You Are Here")); 
       mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.2f)); 
      } 

      @Override 
      public void onStatusChanged(String s, int i, Bundle bundle) { 
      } 

      @Override 
      public void onProviderEnabled(String s) { 
      } 

      @Override 
      public void onProviderDisabled(String s) { 
      } 
     }); 
    } 

ou existe-t-il une autre façon d'obtenir l'emplacement actuel? merci

Répondre

0

Essayez cette

Declare objet marqueur comme locale

private Marker currentMarker; 

Procédez comme suit:

if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { 
@Override 
public void onLocationChanged(Location location) { 
     if(currentMarker!=null){ 
     currentMarker.remove(); 
     } 
     double latitude = location.getLatitude(); 
     double longtitude = location.getLongitude(); 
     LatLng latLng = new LatLng(latitude, longtitude); 
     currentMarker=mMap.addMarker(new MarkerOptions().position(latLng).title("You Are Here")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.2f)); 
     } 

@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 
     } 

@Override 
public void onProviderEnabled(String s) { 
     } 

@Override 
public void onProviderDisabled(String s) { 
     } 
     }); 
     } 
+0

@FrancisVelasco cette façon est mieux si vous ne souhaitez pas supprimer d'autres marqueurs . Cela supprimera uniquement le marqueur d'emplacement. J'utilise ceci et ça marche très bien. Je l'aurais posté si j'utilisais le bureau. –

+0

@FrancisVelasco. ..J'utilisais la même méthode. Content que cela ait aidé. –

0

Enregistrer l'objet fabricant qui est retourné par la méthode addMarker, vous pouvez alors utiliser marker.setPosition pour définir la nouvelle position du marqueur

0

Ce qui se passe en réalité est que chaque fois que l'on appelle LocationChanged, nouveau marqueur est placé mais avant de placer ce marqueur, vous devriez effacer la carte.
Vous devez utiliser cette mMap.clear(); comme dans le code suivant. De cette façon, la carte sera effacée et d'autres marqueurs seront également supprimés.
Répondu par l'application, désolé pour le formatage, éditera plus tard.