2013-08-19 2 views
0

사용자가 원점과 목적지를 두 개의 서로 다른 표시로 선택할 수있는지도 시스템을 구현하고 싶습니다.지도 표시자를 제거하는 방법

사용자가지도를 오래 클릭하면 버튼을 선택하여이 위치를 시작 또는 끝점으로 사용할 수 있습니다. 사용자가 (시작/끝으로 새 위치를 선택) 같은 과정을 반복 할 때

case (R.id.setStart): 
     markerStart = mMap.addMarker(new MarkerOptions() 
     .position(this.startPoint) 
     .title("Start") 
     .draggable(true) 
     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));  
     outputName = rGC.getStringFromCoordinates(this.startPoint.latitude, this.startPoint.longitude); 
     autocompleterStart.setText(outputName); 
     break; 
    case (R.id.setEnd): 
     markerEnd = mMap.addMarker(new MarkerOptions() 
     .position(this.endPoint) 
     .title("End") 
     .draggable(true) 
     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 

그러나, 나는 이전 마커를 제거 할 수 있어야합니다. 따라서 동일한 시작 버튼을 선택하면 이전 시작 마커가 제거되고 새 마커가 만들어집니다.

지도에 특정 마커가 있는지 확인하는 방법이 있습니까? 나는 marker.remove();을 추가하려고했지만 nullpointerexception을 제공합니다.

 case (R.id.setEnd): 
     markerEnd.remove(); 
     markerEnd = mMap.addMarker(new MarkerOptions() 
     .position(this.endPoint) 
     .title("End") 
     .draggable(true) 
     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));  

아이디어가 있으십니까? 고마워요! 당신이 marker`가 null`때문입니다 널 포인트 예외를 얻는 경우

+0

를 내가 내 응용 프로그램과 잘 작동에 구현 한 방법을 ... 사용할 수 있습니다. 마커가 설정되지 않은 상태에서 처음으로 명령을 건너 뛰도록 앞에 'if (marker! = null)'를 추가하십시오. – Robadob

+0

@ Robadob 메소드 시작시 두 마커를 모두 초기화해야하므로 작동하지 않습니다. 그래서 아무것도 제거하지 않습니다. – linus

+0

아마도 마커를 수업 내 어딘가에 저장해야할까요? 사용자가 마커를 다시 잡을 수있는 유일한 방법은 사용자가 마커를 클릭하는 것입니다. – Robadob

답변

0

당신은 나를 위해

LatLng latpoint; 

MAP.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 

      @Override 
      public void onMapLongClick(LatLng point) { 
       // TODO Auto-generated method stub 

       // MAP.clear(); 
       if (marker != null) { 
        marker.remove(); 
       } 
       latpoint = point; 
       marker = MAP.addMarker(new MarkerOptions() 
         .position(
           new LatLng(latpoint.latitude, 
             latpoint.longitude)) 
         .title(point.toString()).draggable(true) 
         .visible(true)); 

      } 

     }); 
+0

이것은 맞습니다. 제 실수는 메소드 내에서 마커를 초기화했기 때문입니다. – linus

관련 문제