ganesan g
ganesan g

Reputation: 87

How to remove a marker in marker on click listener?

My application uses Google maps and fixes two set of markers named as mark and marker,but when I click on the marker it needs to check whether the mark is null or not, if the mark is null then mark can be added else remove the previous mark and add the latest mark.

mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker arg0) { 
        // TODO Auto-generated method stub
        regi=arg0.getTitle().toString();
        Log.e("aaa", ""+regi);
        JSONPost jsonpost= new JSONPost();

        ja=jsonpost.datewise(regi);
        Log.e("Home_details..", "" + ja);
        //new DownloadJSON2().execute();
        try {
            arraylist11 = new ArrayList<HashMap<String, String>>();
            arraylist12 = new ArrayList<HashMap<String, String>>();
            jsonarray = ja.getJSONArray("Routeinbus");
            for (int i = 0; i <jsonarray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                json = jsonarray.getJSONObject(i);
                Log.e("G>>>>>>>>>>>", "" + json);
                // Retrive JSON Objects
                // map.put("flatID", jsonobject.getString("flatID"));
                map.put("FromLat", json.getString("FromLat"));

                map.put("FromLong", json.getString("FromLong"));
                sourcelat = json.getDouble("FromLat"); 
                sourcelong=json.getDouble("FromLong");
                source=new LatLng(sourcelat, sourcelong);
                // map.put("FlatImage",
                // jsonobject.getString("FlatImage"));
                map.put("Fromaddress", json.getString("Fromaddress"));
                map.put("ToLat", json.getString("ToLat"));
                map.put("ToLong", json.getString("ToLong"));
                routeid=json.getString("RouteID");
                destname=json.getString("Toaddress");
                destlat2=json.getDouble("ToLat");
                destlong2=json.getDouble("ToLong");
                destination2=new LatLng(destlat2, destlong2);
                jsonarray1 = json.getJSONArray("Routes");
                Log.d("Hbbbbbbbbbbbbbbb", "" + jsonarray1);
                for (int j = 0; j <jsonarray1.length(); j++) {
                    jsonobject1 = jsonarray1.getJSONObject(j);
                    jsonarray2=jsonobject1.getJSONArray("stages");
                    Log.d("jsonarray2", "" + jsonarray2);

                    for(int k=0;k<jsonarray2.length();k++) {
                        jsonobject2 =jsonarray2.getJSONObject(k);
                        HashMap<String, String> map1 = new HashMap<String, String>();
                        map1.put("Lat",jsonobject2.getString("Lat"));

                        Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject2.getString("Lat"));
                        map1.put("Long",jsonobject2.getString("Long"));
                        map1.put("StopName", jsonobject2.getString("StopName"));
                        Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject2.getString("Long"));
                        //map1.put("LiveLongitude",jsonobject1.getString("LiveLongitude"));
                        //Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject1.getString("LiveLongitude"));

                        arraylist12.add(map1);

                        Log.e("arraylist12", ""+arraylist12);

                        //marker=mMap.addMarker(new MarkerOptions().position(destination2).icon(BitmapDescriptorFactory .fromResource(R.drawable.bustour)));
                        if(mark!=null) {
                            mark.remove();
                        }

                        for (int m = 0; m < arraylist12.size(); m++) { 
                            final LatLng position = new LatLng(Double.parseDouble(arraylist12.get(m).get("Lat")), 
                            Double.parseDouble(arraylist12.get(m).get( "Long"))); 
                            Log.e("position", ""+position);                             
                            String stopname = arraylist12.get(m).get("StopName");
                            final MarkerOptions options = new MarkerOptions().position(position); 
                            //mMap.addMarker(options); 

                            mark=mMap.addMarker(new MarkerOptions().position(position).icon(BitmapDescriptorFactory .fromResource(R.drawable.bustour)).title(stopname));
                        }
                    }
                }
                arraylist11.add(map);
                Log.e("arraylist2",""+arraylist11);
            } 
        } catch (Exception e) {
            String result = "Error";
        }
        return false;
    }
}); 

Upvotes: 0

Views: 1272

Answers (1)

KishuDroid
KishuDroid

Reputation: 5451

ust creat a new marker object and before adding a new marker, remove the previous one

Marker marker;

    MAP.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {

                    @Override
                    public void onMapLongClick(LatLng arg0) {
                        if (marker != null) {
                            marker.remove();
                        }
                        marker = MAP.addMarker(new MarkerOptions()
                                .position(
                                        new LatLng(arg0.latitude,
                                                arg0.longitude))
                                .draggable(true).visible(true));
                    }
                });

Do the same for OnMapClick

MAP.setOnMapClickListener(new OnMapClickListener() {
        @Override
        public void onMapClick(LatLng point) {
            // TODO Auto-generated method stub

                if (marker != null) {
                    marker.remove();
                }
            marker = MAP.addMarker(new MarkerOptions()
                    .position(currentPosition)
                    .snippet(
                            "Lat:" + location.getLatitude() + "Lng:"
                                    + location.getLongitude())
                    .icon(BitmapDescriptorFactory
                            .defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                    .title("ME"));
            Log.e("lat", "" + point);

        }
    });

Upvotes: 1

Related Questions