19 Января

Новая версия приложения "Маяки Прибалтики" с позавчера доступна на всех платформах. Последней важной его "фишкой" является новая библиотека карт. Наконец-то на карте появился фильтр по типу объекта и, как мне кажется, она впервые стала функциональной. Очень удобно оставить только маяки открытые для посещения, увидеть их расположение наглядно и составить план поездки. Дополнительный бонус, которого даже я не ожидал - новые карты работают заметно быстрее. На видео два схожих по производительности смартфона на Андроиде. Слева старая версия, справа - новая.

Дополнительный бонус, на который я очень надеялся - отображение всех маркеров на карте на Айфонах. Всегда устройства Apple сами решали сколько маркеров в моём приложении им показывать, но не очень много. При приближении карты появлялись новые маркера, при отдалении они исчезали. Увидеть полную картину (а именно в этом была цель раздела с картой) не было никакой возможности. Так как своих устройств от Apple у меня долгое время не было, сам я узнал об этом только года через два после релиза. Сейчас с новой библиотекой всё показывается, как и было задумано.

Далее об этом более подробно, с точки зрения программирования. Итак, как понятно из видео выше, я сменил библиотеку mapbox_gl на flutter_map. Более подробно об опыте работы с обеими библиотеками я писал тут.

flutter_map хорошо показала себя в "Маяках Болгарии", так что не было причин не использовать её и тут. А теперь время офигительных историй! При нажатии на маркер на карте, открывается страница приложения, соответственно, в данных каждого конкретного маркера должна храниться информация о том, страницу какого маяка открывать при нажатии на него. К сожалению, mapbox_gl такой возможности не имел, там данные маркера - это только то, что показывается на карте. Логика подсказывает, что должна быть такая возможность, но ничего такого я найти не смог. Обдумав несколько вариантов, самым простым оказалось хранить необходимые данные в виде подписи к маркеру. То есть, на карте, помимо иконок, шрифтом размером 0 выводились ещё и системные номера маяков. Костыль? Он, родимый. Ну и понятно, что судьба у него была классическая "костыльная": вроде и надо переделать, но и так работает, лучше не трогать. Ну а во flutter_map всё получилось сделать без "костылей".

Не накомментили ещё. Би зэ фёст!

Оставить комментарий

Цитировать
в комментарии