Removing Markers in android
android, google-maps, google-maps-markers
Solution
Use this to add markers
As Global
List<Marker> mMarkers = new ArrayList<Marker>();
And In your for loop add markers to this list like
for (int i = 0; i < point_new.length; i++) {
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(point_new[i]);
Marker marker = mMap.addMarker(markerOptions);
marker.setTitle("Point");
marker.setSnippet("this is snippet");
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.p));
mMarkers.add(marker); // <-- Like this
}
And to remove markers
private void removeMarkers() {
for (Marker marker: mMarkers) {
marker.remove();
}
mMarkers.clear();
}
hope it will help.
Problem
I have a Global array Object like `Marker marker_array[];` and later in Layout click I initialized it as `marker_array = new Marker[8];`. I want to add markers to map on that layout and remove on 2nd click so I created `clickcount` Global variable with zero value. My proper code is here ``` final RelativeLayout layout = (RelativeLayout) findViewById(R.id.track_div); layout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clickcount++; point_new = new LatLng[8]; point_new[0] = new LatLng(31.5301843, 74.3207487); point_new[1] = new LatLng(31.5214693,74.3236027); point_new[2] = new LatLng(31.5194393, 74.3257327); point_new[3] = new LatLng(31.4942166, 74.3004533); point_new[4] = new LatLng(31.4864646, 74.2911203); point_new[5] = new LatLng(31.4803596, 74.2787933); point_new[6] = new LatLng(31.4764716, 74.2638203); point_new[7] = new LatLng(31.4775236, 74.2628873); // initialize marker_array; marker_array = new Marker[8]; Toast.makeText(getApplicationContext(), "count "+clickcount, Toast.LENGTH_SHORT).show(); // if (clickcount % 2 == 0) { polyline.setVisible(false); for (int i = 0; i < point_new.length; i++){ Toast.makeText(getApplicationContext(), "marker length ="+marker_array.length, Toast.LENGTH_SHORT).show(); marker_array[i].remove(); // marker_array.setVisible(false); } } else { polyline.setVisible(true); for (int i = 0; i < point_new.length; i++) { // marker_array = new Marker[point_new.length]; MarkerOptions markerOptions = new MarkerOptions() .position(point_new[i]); marker_array[i] = mMap.addMarker(markerOptions); marker_array[i].setTitle("Points"); marker_array[i].setSnippet("Distance = 9.6 km, Time = 20 minute/s"); marker_array[i].setIcon(BitmapDescriptorFactory.fromResource(R.drawable.bus)); } } ``` The problem is that it creates all 8 markers But does not remove, Even if in if condition where I'm trying to remove markers `Toast` shows proper length `8`. Butt when I remove any of the `marker_array` separately as `marker_array[7]` it removes it. How can I remove all the markers in marker_array without `map.clear();` method because I have some other things like polyline etc that I do not want to remove. Any effort will be appreciated.