2012-08-09 4 views
0

Google MapView를 기반으로하는 대형 벡터 오버레이가있는 앱이 있습니다. 한 번에 최대 500 개의 복잡한 다각형이 화면에 나타날 수 있습니다. 내 전화 (안드로이드 2.3.4)에서 MapView의 다시 그리기는 그것이 필요한지 아닌지 짧은 시간 간격으로 자동으로 실행됩니다.Android MapView의 자동 다시 그리기를 중지하는 방법은 무엇입니까?

문제 :
이 때문에 큰지도의 다시 그리기 시간 UI 응답 속도가 느려질 수 있습니다. 예를 들어 메뉴를 여는 데 약 1 초가 걸릴 수 있습니다. 모든 대화 상자의 응답이 좋지 않습니다.

질문 :
그것은지도보기에 대한 자동 다시 그리기를 해제 할 수 있습니까? 또는 다른 생각 UI 응답을 향상시키는 방법?

* MapView.SetEnabled (false)가 수행하지 않으면 MapView가 unclickable이됩니다. MapView.setWillNotDraw (true)는 검은 화면을 남겨 둡니다.

* Android 2.2에서 아는 한 변경 사항을 보려면 자동 다시 그리기가 발생하지 않습니다 (MapView.Invalidate()가 필요합니다). 어쩌면 OS/라이브러리 버전 일뿐만 아니라 하드웨어 문제 일 수도 있습니다.

답변

1

MapView에 대한 지식이있는 한지도를 드래그하거나 확대/축소하거나 map.postInvalidate()를 호출하지 않으면지도가 다시 그려집니다. 이제 귀하의 질문에 답변하십시오 :

"MapView의 자동 다시 그리기를 끌 수 있습니까?" 예. MapView의 onDraw() 메서드를 재정의해야합니다.지도를 그릴 때마다 호출되는 onDraw() 메서드이므로 기본적으로 전체 지도를 그려야합니다 (기본 드로잉은 super.onDraw() 호출을 사용하여 수행됩니다). 또는 오버레이 중 일부만을 특히 그릴 필요가있는 경우

+0

초기 의심이 충분했습니다. 모든 무효화 호출이 기록되었습니다. 내 코드와 매초마다 전화 했어. onSensorChanged 이벤트에서 나온 것으로 밝혀졌습니다. 나는 개발의 초기 단계에서지도를 회전시키고 있지만 그것을 버렸다. 그러나 전화는 그대로 남아있었습니다. 구형 전화기에서 왜 작동하지 않았는지는 거의 관련이 없습니다. 그래서 내가 바보짓을하지 않으면 MapView가 자동으로 다시 그려지지 않습니다. – user1588091

+0

우수! 나는 기쁘다. 또한 도움이되었다고 생각되면 내 대답을 upvote 할 수 있습니다! 건배 –

관련 문제