Повышение эффективности Google Maps - PullRequest
3 голосов
/ 21 сентября 2011

Я должен нарисовать около 10000 линий на Google Maps.Таким образом, он тратит слишком много времени на метод draw().Перемещение по карте становится очень медленным.Есть ли способ кэширования рисунка или я могу нарисовать только часть карты / холста, которая в настоящее время видна на экране?

Ответы [ 3 ]

2 голосов
/ 29 сентября 2011

Теперь я могу нарисовать все 10000 линий без каких-либо задержек. Все дело в тщательном проектировании draw() метода. Я переместил некоторые операции создания объектов (например, Path, Point) из draw (). Я видел, что особенно projection.toPixels(geoPoint, point); очень дорогая операция. Наконец, я установил альфа-константу, которая удерживает значение движения пальца в пикселях. И он рисует только тогда, когда пиксель или движение пикселя больше, чем альфа.

2 голосов
/ 21 сентября 2011

рисование 10000 линий никогда не станет свободным. Я предполагаю, что вы соединяете точки.

Здесь является реализацией точечной кластеризации в mapView, а также отображает видимые из них, если хотите. Таким образом, вы можете рисовать линии для кластеризованных точек.

1 голос
/ 21 сентября 2011

Посмотрите на этот пост, он предлагает нарисовать ваши линии в форме, а затем нарисовать их в виде карты.

Здесь: Кэшировать то, что рисуется на MapView в Android

Просто предложение по этому вопросу, вы можете попробовать сохранить MapView в виде растрового изображения, а затем визуализировать его (в зависимости от вашей ситуации).

Здесь: Сохранить MapView в виде растрового изображения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...