Сохраняйте пользовательские накладные плитки Google Map видимыми после увеличения - PullRequest
0 голосов
/ 29 января 2019

Я использую функцию наложения листов в Google Map для Android для отображения пользовательских листов карт, предоставляемых сторонней службой.

Моя проблема в том, что когда пользователь увеличивает масштаб карты и переключается на следующий уровень масштабирования, уже видимые плитки исчезают, а затем запускается метод getTile() моей реализации TileProvider.Это вызывает неприятное мерцание моего вида карты и моменты, когда пользователь может видеть только карту по умолчанию.

Стандартные шкалы поведения Карты Google и "чрезмерное увеличение" видимых в данный момент листов до тех пор, пока не будут загружены новые.Есть ли способ создать такой же эффект с помощью Tile Overlay?Я знаю, что плитки с «чрезмерным увеличением» могут быть размытыми, но в моем случае это нормально.

1 Ответ

0 голосов
/ 29 января 2019

Удаление пользовательских плиток при изменении уровня масштабирования является поведением Android GoogleMap по умолчанию.Чтобы «подавить» ее (показывая предыдущую карту, когда плитки для масштабирования ± 1 уровень все еще загружаются), вы можете:

1) создать GroundOverlay со снимком экрана текущего вида карты.Снимок экрана карты Google вы можете сделать как в ответах на этот вопрос DiscDev и удалить его при загрузке плиток;

2) создать собственный вид, который расширяет MapViewКласс, как в этот ответ и показать в переопределенном методе dispatchDraw() все, что вы хотите;

3) вы можете установить ImageView над вашим MapView и показать его со скриншотом на нем, покаизменен масштаб и загружены новые плитки.А при необходимости вы можете переводить события касания из ImageView в MapView и так далее.

Я предпочитаю стр.2 - создать пользовательский вид на основе MapView, переопределить dispatchDraw() и показывать временную карту внутри него во время загрузки новой карты.

...