0

我的应用程序使用谷歌地图和修复两套命名为mark和标记的,但是当我点击它需要检查mark是否为空或不是,如果mark为null,则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; 
    } 
}); 

回答

0

乌斯创造一个新的标记对象和之前添加新的标记,删除前一个

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

     } 
    });