2012-01-16 4 views
2

클래스 EventOnMap의 개체가 포함 된 배열 목록이 있습니다. 모든 객체는 (다른 것들과 함께) 멤버 변수 eventLatitude, eventLongitudeeventType을가집니다. 목록은 초당 최대 몇 번까지 규칙적으로 업데이트됩니다 (예 : 개체 삽입 및 삭제). 목록이 너무 크지 않아 최대 50 개의 요소가 포함됩니다.개체 목록에서지도 오버레이 만들기/업데이트

mapView 이제 목록에 따라 모든 이벤트에 대한 오버레이를 동적으로 만들고 업데이트하고 싶습니다. 목록은 오버레이의 상태를 나타냅니다. 즉, 해당 위도/경도 값이 목록에서 변경되면 오버레이 위치를 업데이트하고 싶습니다.

아무도이 작업을 수행하는 방법을 알고 있습니까? 미리 감사드립니다.

답변

2

배열의 모든 항목에 오버레이를 만드는 것보다이 경우에 더 적합한 ItemizedOverlay 클래스를 살펴보십시오.

더 큰 문제는 간격을 실제로 작게 업데이트하는 것일 수 있습니다. ItemizedOverlay가 자주 업데이트 될 때 어떻게 성능이 향상되는지 알 수 없습니다. 오버레이에서 항목을 편집 할 수 없으므로 항목의 위치를 ​​변경하려면 제거하고 ItemizedOverlay에 다시 추가하고 populate()를 호출하십시오. 그러나 이것은 모든 항목을 다시 처리 할 것입니다.

지도에있는 모든 항목을 처리하는 하나의 맞춤형 오버레이를 작성하는 것이 좋습니다.

+0

감사합니다. Flo! 이것은 좋은 생각입니다! 그런 맞춤형 오버레이는 어떻게 생겼을까요? 나에게 힌트를 줄 수 있니? – Palund

+0

오버레이 클래스에서 상속받은 클래스를 구현해야합니다. 클래스에서 그리기 메서드를 재정의하고 배열 항목에 대한 그리기를 구현해야합니다. 맞춤 오버레이 클래스를 구현하는 방법에 대한 아이디어를 얻으려면이 항목을 선택하십시오. http://stackoverflow.com/questions/4428730/creating-custom-overlay-on-the-map 물론 ItemizedOverlay를 사용해 볼 수도 있습니다. 아마도 빠릅니다. – Flo