如何在点击监听器上删除标记中的标记?

时间:2015-10-05 07:21:46

标签: android google-maps google-maps-markers google-maps-api-2

我的应用程序使用Google地图并修复了两组名为markmarker的标记,但是当我点击marker时,需要检查mark是或否,如果mark为空,则可以添加mark,否则删除之前的mark并添加最新的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;
    }
}); 

1 个答案:

答案 0 :(得分:1)

创建一个新的标记对象,在添加新标记之前,删除前一个标记

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

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

        }
    });