[Flutter] Решение задач позиционирования при просмотре карты во Flutter
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В мобильных приложениях, которые используют картографические данные, часто возникает необходимость акцентировать внимание пользователя на том или ином участке карты в зависимости от бизнес-целей. Расскажу о тех задачах, которые возникли перед командой проекта «Свое родное», при позиционировании на карте. И в конце покажу пример - небольшую программку, которая показывает города на карте и меняет позицию на карте в зависимости от заданного типа масштабирования. Flutter давно эффективно использует картографические данные:
- Google Maps
- native_view (использует специфичные для платформ карты - для Android - Google Maps, для iOS - Apple Maps.
- HERE
- Mapbox
- Яндекс-карты
- И список постоянно расширяется.
Набор методов у них похожий. Так что зная, как работать с одной библиотекой, освоить остальные несложно. Мы используем Гугл-карты.В приложении «Свое родное» у нас возникают следующие ситуации:
- Простейшая - центрировать карту на заданной точке. Например, показать позицию пользователя или пункта самовывоза фермера.
- Центрировать карту на выбранной точке, при этом должна быть видна текущая позиция пользователя. Так можно посмотреть, насколько далеко пункт самовывоза находится от пользователя.
- Показать несколько заданных точек, при этом все должны уместиться на карте с максимальным приближением. Например, показать все пункты самовывоза фермера.
- Найти ближайшую к пользователю точку и показать ее, при этом центр карты - позиция пользователя.
- Найти несколько ближайших к пользователю точек и показать их, оставив центр на пользователе. Например, так он может сравнить, насколько далеко от него находятся различные пункты самовывоза.
Чтобы решить все задачи такого рода, можно серьезно заняться математикой, рассчитать необходимые точки по удаленности от пользователя, затем вычислить масштаб, чтобы задать его через установку CameraPosition на CameraUpdate.newLatLngZoom(point, zoom), а можно воспользоваться функцией CameraUpdate.newLatLngBounds(bounds, areaPadding), для использования которой единственное, что нужно сделать, - определить видимый прямоугольник. Вторую функцию я и буду использовать. Посмотрим на параметры:
- areaPadding. Это значение представляет собой расстояние от точки на карте, которую необходимо хорошо видеть до границы видимой области экрана. Очевидно, что точку на самой границе экрана пользователь не увидит, а обычно желательно добавить маркер или еще как-то визуально ее отметить.
- bounds относится к типу LatLngBounds и представляет собой условный прямоугольник, который включает в себя все точки, которые надо сделать видимыми на карте. Для того чтобы его задать, нужно найти крайнюю северо-западную точку и крайнюю юго-восточную точку. Этим и будет заниматься класс VisibleArea, который я приведу ниже.
В классе есть несколько конструкторов в зависимости от ситуации (в комментариях указан номер ситуации и необходимый конструктор).Извините, данный ресурс не поддреживается. :( Благодаря MobX можно с минимумом кода обновить позицию изменив только один параметр (например, добавив новую точку в рассчет). Все остальные рассчитываются автоматически.Извините, данный ресурс не поддреживается. :( В результате мы получаем вот такие красивые, а главное функциональные экраны:
- Позиция пользователя и заданное количество фермерских хозяйств, которые будут ближайшими
- Все пункты самовывоза фермера
Посмотреть полный код тестового приложения, которое показывает, как использовать позиционирование в реальной ситуации вместе с MobX и Гугл-картами, можно в репозитории.
===========
Источник:
habr.com
===========
Похожие новости:
- [Flutter] Решение задач позиционирования при просмотре карты во Flutter
- [Читальный зал] Мы преодолеем
- [Платежные системы, Разработка мобильных приложений, Разработка под Android, Flutter] История разработки SDK для приема платежей в мобильном приложении на Flutter
- [Разработка мобильных приложений, Dart, Flutter] Моя история реализации офлайн приложения Хабра
- [Разработка мобильных приложений, Машинное обучение, Софт, Искусственный интеллект, Flutter] Flitter Your Business With AI Integrated Flutter App Development
- [Робототехника] Farm robotics: ферма почти как в играх, только лучше
- [Dart, Flutter] Flutter meetup: речевая аналитика, отрисовка оригинальных интерфейсов и код для перехода к null-safety
- [Разработка под Android, Dart, Разработка под Linux, Производство и разработка электроники, Flutter] Как портировать SDK Flutter на ТВ-приставку для разработки и запуска приложений Android TV
- [Разработка под iOS, Разработка мобильных приложений, Разработка под Android, Swift, Flutter] Онлайн митап по мобильной кросс-платформе 15 апреля
- [PHP, API, Dart, Flutter] Ugly API
Теги для поиска: #_flutter, #_googlemaps, #_maps_api, #_mobx, #_blog_kompanii_rosselhozbank (
Блог компании Россельхозбанк
), #_flutter
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:22
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В мобильных приложениях, которые используют картографические данные, часто возникает необходимость акцентировать внимание пользователя на том или ином участке карты в зависимости от бизнес-целей. Расскажу о тех задачах, которые возникли перед командой проекта «Свое родное», при позиционировании на карте. И в конце покажу пример - небольшую программку, которая показывает города на карте и меняет позицию на карте в зависимости от заданного типа масштабирования. Flutter давно эффективно использует картографические данные:
Посмотреть полный код тестового приложения, которое показывает, как использовать позиционирование в реальной ситуации вместе с MobX и Гугл-картами, можно в репозитории. =========== Источник: habr.com =========== Похожие новости:
Блог компании Россельхозбанк ), #_flutter |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:22
Часовой пояс: UTC + 5