Проблемы с производительностью ItemizedOverlay.draw ()

1

У меня есть класс:

public class WaypointOverlay extends ItemizedOverlay<OverlayItem>

Он отменяет метод draw() ItemizedOverlay.
В моей деятельности у меня есть карта со множеством элементов оверлея, а также список. Я заметил из вывода traceviewer и logcat, что MapView.onDraw() вызывается много раз, даже когда карта не тронута. Это привело к действительно невосприимчивому списку и карте (когда у меня есть класс WaypointOverlay, просто возвращайся из этих вызовов onDraw, все работает хорошо)

Как я могу вызвать вызовы onDraw менее часто - в идеале, только когда диапазон MapView изменяется? Я попытался в onDraw проверить, имеет ли MapView тот же самый диапазон lat/lon, что и в последнем вызове onDraw, и только рисование, если они отличаются друг от друга. Это вызвало появление OverlayItems только при панорамировании или масштабировании карты.

Любые идеи по повышению производительности?

  • 0
    Похоже, что существует много вызовов «invalidate ()». Ваш код делает этот вызов?
  • 0
    Я не звоню в MapView.invalidate ().
Теги:
android-mapview

1 ответ

1

Думаю, я, возможно, решил эту проблему (по крайней мере, для моего случая). В моем приложении пользователь может перейти от карты, а затем вернуться к ней, все в том же самом действии. Каждый раз, когда пользователь возвращался на карту, я снова добавлял все созданные мной оверлеи. Это означало, что на карте слишком много наложений - я не мог их видеть, потому что они перекрывались. Вызов MapView.getOverlays(). Clear() заставил карту и список выполнить значительно лучше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню