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.
Use this to add markers
As Global
And In your for loop add markers to this list like
And to remove markers
hope it will help.
Try this,
}
The method signature for
addMarker
is:So when you add a marker to a
GoogleMap
by specifying the options for the marker, you should save theMarker
object that is returned (instead of theMarkerOptions
object that you used to create it). This object allows you to change the marker state later on. When you are finished with the marker, you can callMarker.remove()
to remove it from the map.As an aside, if you only want to hide it temporarily, you can toggle the visibility of the marker by calling
Marker.setVisible(boolean)
.Similar to Remove a marker from a GoogleMap