2013-02-28 6 views
1

Marker에 Android의 새로운 V2 Google지도 API를 간단하게 추가 할 수 있습니다. 구성 변경 또는 인스턴스 저장시 마커가 다시 작성되기 때문에 해당 마커를 통해 참조해야합니다. 문제는지도 ID에서 특정 마커를 제거하는 것입니다.Google지도 API v2 ID로 마커 찾기

내 사용 사례는 마커를지도에 추가하고 실제 객체에 매핑하여 ID를 저장하는 것입니다. 그런 다음 사용자는이 실제 객체 중 하나를 제거하여 마커 ID를 찾고 마커를지도에서 제거하려고합니다. 마커 객체를 가지고 remove()를 호출하는 방법 만 알고 있습니다. 나는 또한 내가 필요지도 클러스터링을하고 비슷한 상황에 건너 온 한

private Marker myMarker; 

myMarker = getMap().addMarker(new MarkerOptions() 
        .position(latLng) 
        .title("My Spot") 
        .snippet("This is my spot!")); 

지금 제거 할 마커 당신이

myMarker.remove(); 

답변

2

구성 변경시 마커를 다시 만드는 방법에 대한 설명서가 잘못되었으며 실제로 실제로 잘못되었습니다.

+0

정말이에요? – gingo

+0

@gingo 예. onCreate if (savedInstanceState == null)에 단일 마커를 만들고 화면을 회전합니다. 회전 후에는 마커가 재현되지 않습니다. http://code.google.com/p/gmaps-api-issues/issues/detail?id=5101 –

0

은 단순히 다음을 시도 마커가 클러스터에 추가되면 제거하십시오.

내가 사용한 솔루션은 마커가 생성되어지도에 추가 될 때 마커를 저장하고 마커를 지도 (String - Marker)에 저장하는 것입니다. 여기서 key (String) 자동으로 생성 된 마커 ID가되며 값은 마커 객체가됩니다.

이제 ID로 마커 개체에 대한 참조를 가져올 수 있으며 remove()을 해당 마커에서 호출 할 수 있습니다.

이 정보가 도움이되기를 바랍니다.

+0

onSaveInstance 이벤트가 발생할 때까지 솔루션은 잘 작동합니다. 설명서는 http://developer.android.com/reference/com/google/android/gms/maps/model/Marker.html#getId%28%29 – gingo

1

를 호출 할 수

+1

에서 확인할 수 있습니다. onSaveInstance 이벤트가 발생할 때까지 솔루션이 잘 작동합니다. 제기된다. 설명서는 http://developer.android.com/reference/com/google/android/gms/maps/model/Marker.html#getId%28%29 – gingo

+0

예에서 확인할 수 있습니다. u는 또한 핀을 넣고 배열에 유지하려는 모든 latlng을 보유 할 수 있습니다. 그리고 latlng가 Parcelable을 구현할 때 번들로 배열을 유지하는 것이 쉬우 며 onRestoreInstance를 사용하면 다시 핀을 그릴 수 있습니다. 지도. 그리고 대답의 언급 된 단계를 다시 따르십시오. –

관련 문제