2012-06-03 7 views
0

MapView에 수많은 오버레이가 추가되었습니다. MapView를 이동, 확대 또는 축소 할 때지도가 작업에 응답하기 전에 오버레이가 크게 지연됩니다. 이 지연을 최소화 할 수있는 방법이 있습니까?Android : 수많은 오버레이로지도 동작이 느려짐

누군가 다른 사람이 비슷한 문제에 대해 하나의 큰 오버레이로 모든 오버레이를 결합하는 것을 제안했습니다. 그런 식으로 작동한다면, 내 오버레이 어레이를 어떻게 하나의 오버레이로 결합 할 수 있을까요?

오버레이에 지정된 모든 선을 비트 맵에 그려서 비트 맵을 오버레이하는 것이 성능을 향상시킬 수 있음을 알았습니다. 이것이 최선의 선택이라면 어떻게 구현할 것인가?

도움을 주시면 감사하겠습니다. 더 자세한 정보 나 코드가 필요하면 다음으로 문의하십시오!

답변

0

MapView에 수많은 오버레이가 추가되었습니다. MapView를 이동, 확대 또는 축소 할 때지도가 작업에 응답하기 전에 오버레이가 크게 지연됩니다. 이 지연을 최소화 할 수있는 방법이 있습니까?

덜 복잡하고 덜 복잡한 오버레이가 있습니다. Traceview를 사용하여 문제점의 정확한 위치를 판별하십시오. 기존 draw() 방법 중 하나가 느린 경우 오버레이 결합에 대한 걱정보다 먼저 해결해야합니다. 초과 시간이 MapView의 오버레이 관리에있는 것으로 보이는 경우 오버레이를 더 적은 오버레이로 통합하면 이점이있을 수 있습니다.

내 오버레이 배열을 단일 오버레이와 어떻게 조합합니까?

코드를 단일 오버레이 클래스로 리팩터링합니다. 그 외에도 우리는 오버레이에 대해 많은 것을 알지 못하기 때문에 당신을 도울 수 없습니다.

이것이 최선의 선택이라면 어떻게 구현할 것인가?

다음 draw()에 오버레이 결과 Bitmap을 그릴, 그것에 당신의 선을 그릴하는 bitmap-backed Canvas 만들기, 내가 감히.

+0

좋아요, Traceview로 어디서 속도가 느려지는지 정확하게 파악한 다음 질문이 많은 날이 아마도 2 ~ 3 일 후에 다시보고하겠습니다. 감사합니다 –

+0

좋아, 또 다른 질문이 있습니다. 한 GeoPoint에서 다음 GeoPoint 배열로 배열을 그리려는 것입니다. 내가'projection.toPixels()'를 사용할 수 없다는 것을 고려해 볼 때, GeoPoints에서 생성 된 선을 비트 맵지지 캔버스에 어떻게 그립니다. –

+0

@BrianEcker : 이것은 원래 질문에서 실제로 따르지 않습니다. 의견을 자유 토론 게시판으로 사용하는 대신 새로운 질문을하십시오. 즉,'projection.toPixels()'는 잘 동작하지만 화면 좌표의 픽셀을'Canvas' 좌표로 변환해야합니다. 결과 비트 맵이 왼쪽 위 모서리에 그려지는 경우 픽셀 좌표는 화면과 같이 Canvas에서 동일합니다. 비트 맵이 좌상 구석으로부터 오프셋 (offset)되는 경우,'toPixels()'의 값을 조정할 필요가 있습니다. – CommonsWare

관련 문제