简体   繁体   中英

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

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

        }
    });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM