2014-01-29 3 views
0

mapView에 600 pois가 있습니다. 각 poi는 동일한 PIN을 표시합니다.지도를 느리게하지 않고 개인화 된 핀으로지도보기에 600 포이를 표시 할 수 있습니까?

600 포이를 한꺼번에 표시하면지도의 움직임이 매우 느립니다.

지도의 움직임을 느리게하지 않고도 모두 표시 할 수 있습니까?

이 내 코드의 일부입니다

핀에 대한 나의 비트 맵 :

Bitmap marker= ResourceManager.getImageResourceByName(pinId).getBitmapOfWidth((int) (App.getWidth()*0.14)); 
         d = new BitmapDrawable(marker); 
         d.setBounds(0 - d.getIntrinsicWidth()/2, 0 - d.getIntrinsicHeight(), d.getIntrinsicWidth()/2, 0); 

어떻게 내가 (내가 비동기 작업에서 잠시 동안의 bucle에서이 작업을 수행) 오버레이를 추가

this.itemizedOverlay.addOverlay(values[0]); 

답변

0

많은 핀을 표시하면 항상 맵 속도가 느려집니다. 나는 iOS 응용 프로그램에서 비슷한 문제에 직면했고 가장 좋은 방법은 더 높은 줌 레벨에서 핀을 클러스터링하는 방법을 제시하고 주어진 줌 레벨에서 주어진 뷰포트에 대한 핀을 표시하는 기능을 갖는 것이 었습니다. .

몇 가지 계층 적 클러스터링 알고리즘을 살펴보십시오. 내 솔루션은 핀 데이터가 업데이트 될 때마다 클러스터링 알고리즘을 실행하는 것과 관련이 있습니다. 클러스터링 알고리즘은 모든 핀의 위치를 ​​가져 왔고 N 줌 레벨에 대해 N 개의 클러스터 핀 세트를 생성했습니다. 이러한 N 집합의 클러스터 된 점은 최소 및 최대 줌 레벨을 가지므로 맵이 특정 양으로 확대되어지면 응용 프로그램은 해당 확대/축소 수준에서이 뷰포트의 관련 핀을 요청합니다. 이것은 매우 잘 작동하는 것으로 판명되었습니다. 이러한 계산을 수행하는 작업은 데이터 세트의 모든 핀을 표시하고 현재 뷰포트/줌 레벨로 변환하는 작업보다 훨씬 적습니다.

나는이 코드를 제공 할 수는 없지만 맵에 많은 수의 핀을 표시하는 데 가장 좋은 방법이라고 생각합니다. 외모와 느낌이 사용자에게 훨씬 낫습니다.