У меня есть класс:
public class WaypointOverlay extends ItemizedOverlay<OverlayItem>
Он отменяет метод draw()
ItemizedOverlay
.
В моей деятельности у меня есть карта со множеством элементов оверлея, а также список. Я заметил из вывода traceviewer и logcat, что MapView.onDraw()
вызывается много раз, даже когда карта не тронута. Это привело к действительно невосприимчивому списку и карте (когда у меня есть класс WaypointOverlay
, просто возвращайся из этих вызовов onDraw
, все работает хорошо)
Как я могу вызвать вызовы onDraw
менее часто - в идеале, только когда диапазон MapView
изменяется? Я попытался в onDraw
проверить, имеет ли MapView
тот же самый диапазон lat/lon, что и в последнем вызове onDraw
, и только рисование, если они отличаются друг от друга. Это вызвало появление OverlayItems
только при панорамировании или масштабировании карты.
Любые идеи по повышению производительности?
Думаю, я, возможно, решил эту проблему (по крайней мере, для моего случая). В моем приложении пользователь может перейти от карты, а затем вернуться к ней, все в том же самом действии. Каждый раз, когда пользователь возвращался на карту, я снова добавлял все созданные мной оверлеи. Это означало, что на карте слишком много наложений - я не мог их видеть, потому что они перекрывались. Вызов MapView.getOverlays(). Clear() заставил карту и список выполнить значительно лучше.