30 Июня

Есть тут на сайте на страницах маяков функция, которой я иногда пользуюсь - возможность сортировать маяки по высоте, году постройки и т.д. Судя по тому, что мне несколько раз о такой возможности спрашивали, функционал этот неочевиден, но точно востребован. Я давно думал, как реализовать это в приложении. Как-то ночью не спалось (что для меня норма) и идея пришла. Вчера-позавчера реализовывал, тестировал и в итоге выпустил обновление 3.2.0 для приложения "Маяки Прибалтики".

В главном списке появилась кнопка сортировки (сверху, самая правая из трёх). При любом выбранном варианте кроме алфавита, появляются дополнительные данные: год постройки, высота, дальность видимости и т.д. Очень удобно, если выбрать отображение только маяков и только для какой-то конкретной страны.

Обновление вышло сразу для Андроидов и Эпплов. Также для устройствах на iOS вышло обновление 1.1.0 для приложения "Маяки России" с новой иконкой и обновлёнными картами. На Андроиде всё это было доступно с мая.

21 Июня

Когда красиво и... (бес)полезно

Вчера на Хабре наткнулся на генератор QR-кодов, а котором нейросеть превращает код в единую сгенерированную картинку. Результат выглядит просто бомбически!



Но есть нюанс: не читаются эти коды. Кода, который нормально бы считывался, я добился только с шестого раза.

25 Мая

Никогда такого не было и вот снова... В понедельник собирался быстренько добавить в приложение пару старых фото маяка Саксби... Очнулся только к обеду четверга, глаза слезились от Фотошопа, а в приложение добавлено 56 исторических фоток и чертежей. Неоднократно писал тут, что наш Веб-портал музеев бездонный, но не знал, что настолько. Есть пара чертовски интересных находок! Например, деревянный маяк Папе с очень необычными окнами и подпорками (маяк стоял фактически на песке). Или фото чугунного Даугавгривского маяка, которое я тоже раньше нигде не видел. Оказывается, он был очень похож на наш Кихну, только иллюминаторы в башне прямоугольные, а не круглые. Ещё обнаружилась пара чертежей (маяки Нарва-Йыэсуу и Осмуссаар) временных лантерн, которые ставились на время строительных работ в основной лантерне маяка. Причём, в случае с маяком Осмуссаар, вся конструкция пристраивалась к башне и служила лесами для строителей. Короче, узнал для себя много нового, чему очень рад. Вы же можете ознакомиться со всеми этими находками непосредственно в приложении "Маяки Прибалтики".

Приложение "Маяки Прибалтики"

Кстати, ещё сегодня выпустил для него небольшое обновление под Андроид. Ничего серьёзного, небольшие изменения интерфейса. Сидел на работе в розово-голубой рубашке и подумалось, что неплохо бы кнопочки позакруглять, ну и пошло-поехало... На Эпплах ни этого, ни предыдущего обновлений пока нет, хоть я и пытался. Когда будет - не знаю. Все "спасибы" можно слать напрямую Apple за их обновление Xcode и всю последующую несовместимость с Cocoa Pods. Андроид форева!

19 Января

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

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

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

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

23 Декабря

Третья и заключительная публикация о том, как делалось приложение "Маяки Болгарии". В этой части будут только технические подробности.

Самое большое программное отличие "Маяков Болгарии" - новая библиотека карт. В двух других приложениях я использовал mapbox_gl. Эта библиотека выдаёт отличные векторные карты и имеет кэширование "из коробки", но с ней чертовски сложно работать. Её сложно настраивать и она капризна в работе, хотя, казалось бы, на официальном сайте есть инструкции. У меня был прецедент, когда новая версия приложения, где карты не менялись вообще, вылетала при открытии карт. С приложением "Маяки Болгарии" всё работало на эмуляторе, но не работало на реальном смартфоне. Очень это всё надоело. Вдобавок, mapbox_gl давно утратил статус официального плагина и перемещён из репозитория Mapbox в репозиторий непосредственно автора. Кроме того, развитие его остановилась и сейчас он попросту доживает.

Одной из самых популярных картографических библиотек под Flutter сейчас является flutter_map, которая, по сути, является адаптацией популярной библиотеки Leaflet. Я уже пробовал её в "Маяках Эстонии", но отказался из-за одного досадного бага: если открыть карту, нажать там на маркер маяка (откроется страница этого маяка), потом вернуться назад на карту, нажать на другой маркер, опять вернуться и повторить этот цикл ещё пару раз, карта начинала очень сильно тормозить. Сейчас попробовал её снова и, как оказалось, этого бага больше нет. Второй приятностью перехода на новую библиотеку стал фильтр по типу объектов, как в списке маяков. Я очень много сил потратил, чтобы сделать это на mapbox_gl для "Маяков Прибалтики", но так и не сдюжил. С flutter_map я просто взял код фильтра из виджета списка и он заработал.
Есть в flutter_map и свои нюансы. "Из коробки" нет ни кэширования, ни векторных карт. И то и то доступно через отдельные плагины, но выбрать надо что-то одно. Я выбрал векторные карты, но не смог прикрутить к ним кастомное оформление и отказался. Зато теперь у карт есть кэширование.

Впрочем, самое первое, что я сделал для этого приложения - это логотип. Здесь приключилась некоторая цепочка удачных решений. Идея использовать в логотипе цвета болгарского флага была крайне очевидной. Это напрямую продиктовало выбор маяка - красно-белых маяков в Болгарии всего два (чисто красных нет вообще) и из них Шабла более узнаваем. Таким образом, концепция лого оформилась, но с оригинальными цветами флага оно выглядело не очень. Поиграл с оттенками - стало лучше, даже почти хорошо. Дальше был достаточно важный для меня в таких случаях момент - я взял паузу. Периодически поглядывал на результат, но старался специально ничего не придумывать. В какой-то момент решил попробовать добавить объёма. С логотипом "Маяков России" это не сработало, но тут добавило последний недостающий штрих. Сразу проверил, как получившееся лого будет выглядеть в виде маленькой иконки и понял, что нарисовал свой лучший логотип. Он прекрасен, не спорьте!

Ставьте все приложение (Google Play Market, Apple App Store), если ещё не сделали этого, и читайте историю маяков, на русском о маяках Болгарии есть только у меня в приложении и на сайте. Хороших всем праздников!

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