Привет, это Анна, Team Lead Flutter-команды Friflex
Сегодня открываю месяц навигации на этом канале — весь октябрь вместе с коллегами буду делиться опытом интеграции карт в мобильные приложения. Начну с Яндекс Карт.
Чтобы подключить Яндекс Карты к приложению на Flutter, установим плагин yandex_mapkit. Это можно сделать в три шага:
Шаг 1. Подготавливаем и добавляем зависимости в pubspec.yaml
Выполняем команду flutter pub get
Шаг 2. Настраиваем Yandex MapKit на Android
1. Открываем файл android/build.gradle и указываем вариант нативной библиотеки full/lite:
2. В файле MainApplication.java или MainApplication.kt указываем локализацию и ключ API:
3. В файле AndroidManifest.xml указываем разрешения:
Шаг 3. Настраиваем Yandex MapKit на iOS
1. Открываем файл AppDelegate.swift и указываем локализацию и API ключ:
2. В файле Podfile раскомментируем строку platform :ios, '12.0' и здесь же добавляем конфигурацию нативной библиотеки full/lite:
Готово, все зависимости настроены. Можно начинать писать код для отображения карты, но об этом я расскажу в следующий раз 🤞
#howtoflutter
Сегодня открываю месяц навигации на этом канале — весь октябрь вместе с коллегами буду делиться опытом интеграции карт в мобильные приложения. Начну с Яндекс Карт.
Чтобы подключить Яндекс Карты к приложению на Flutter, установим плагин yandex_mapkit. Это можно сделать в три шага:
Шаг 1. Подготавливаем и добавляем зависимости в pubspec.yaml
flutter:
sdk: flutter
yandex_mapkit: ^4.1.0
Выполняем команду flutter pub get
Шаг 2. Настраиваем Yandex MapKit на Android
1. Открываем файл android/build.gradle и указываем вариант нативной библиотеки full/lite:
yandexMapkit.variant=<YOUR_DESIRED_VARIANT>
2. В файле MainApplication.java или MainApplication.kt указываем локализацию и ключ API:
MapKitFactory.setLocale("YOUR_LOCALE");
MapKitFactory.setApiKey("YOUR_API_KEY");
3. В файле AndroidManifest.xml указываем разрешения:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Шаг 3. Настраиваем Yandex MapKit на iOS
1. Открываем файл AppDelegate.swift и указываем локализацию и API ключ:
YMKMapKit.setApiKey("YOUR_API_KEY")
2. В файле Podfile раскомментируем строку platform :ios, '12.0' и здесь же добавляем конфигурацию нативной библиотеки full/lite:
ENV['YANDEX_MAPKIT_VARIANT'] = '<YOUR_DESIRED_VARIANT>'
Готово, все зависимости настроены. Можно начинать писать код для отображения карты, но об этом я расскажу в следующий раз 🤞
#howtoflutter
❤8🔥5👍2
Media is too big
VIEW IN TELEGRAM
Привет, это Юра, Tech Lead Flutter-команды Friflex
Меня часто спрашивают, как настроить и установить Flutter Aurora. А вот так!
Записал полную инструкцию. Сегодня подробно покажу, как установить Aurora SDK.
🔗 Скачать Aurora SDK
Что делать дальше, смотрите в следующем выпуске.
#howtoflutter
Меня часто спрашивают, как настроить и установить Flutter Aurora. А вот так!
Записал полную инструкцию. Сегодня подробно покажу, как установить Aurora SDK.
Что делать дальше, смотрите в следующем выпуске.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
Привет, это Анна, Team Lead Flutter-команды Friflex
Продолжаю рассказывать, как интегрировать карты в мобильные приложения. Сегодня разберемся, как создать список точек, которые будут отображаться маркерами на карте
Используем класс
🔴 icon принимает экземпляр PlacemarkIcon, который позволяет создавать простые и составные иконки
🔴 text дает возможность отображать кастомный текст на маркере
🔴 onTap и onDrag задают взаимодействия с маркером
Создадим список точек Point, которые необходимо отобразить маркерами на карте:
Для каждой отдельной точки создаем экземпляр маркера
Список объектов готов. В следующий раз расскажу, как отобразить их на карте.
#howtoflutter
Продолжаю рассказывать, как интегрировать карты в мобильные приложения. Сегодня разберемся, как создать список точек, которые будут отображаться маркерами на карте
yandex_mapkit. Используем класс
PlacemarkMapObject. Он принимает разные параметры, которые помогают создать уникальный дизайн маркера и настроить нужные пользовательские взаимодействия:Создадим список точек Point, которые необходимо отобразить маркерами на карте:
List<Point> get points {
return const [
Point(latitude: 55.755864, longitude: 37.617698),
Point(latitude: 51.507351, longitude: -0.127696),
Point(latitude: 41.887064, longitude: 12.504809),
];
}
Для каждой отдельной точки создаем экземпляр маркера
PlacemarkMapObject.
List<PlacemarkMapObject> get mapObjects => List.generate(
points.length,
(index) => PlacemarkMapObject(
mapId: MapObjectId('MapObject $index'),
point: points[index],
opacity: 1,
text: PlacemarkText(
text: '$index',
style: const PlacemarkTextStyle(size: 14, color: Colors.white),
),
icon: PlacemarkIcon.single(
PlacemarkIconStyle(
image: BitmapDescriptor.fromAssetImage('assets/icons/map_point.png'),
scale: 2,
),
),
onTap: (mapObject, point) {
// действие при нажатии на маркер
},
onDrag: (mapObject, point) {
// действие при перетягивании маркера
},
),
);
Список объектов готов. В следующий раз расскажу, как отобразить их на карте.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3🤩2
Привет, это Анна, Team Lead Flutter-команды Friflex
Я уже рассказала, как подключить библиотеку
Библиотека
YandexMap нужно поместить на страницу, где должна находиться карта. Настройки в YandexMap позволяют управлять внешним видом карты и ее функциями. Вот некоторые из них:
1️⃣
2️⃣
3️⃣
4️⃣
Чтобы отобразить маркеры объектов на карте, нужно передать их список в поле
Готово! В следующий раз рассмотрим, как и зачем использовать кластеризацию объектов.
#howtoflutter
Я уже рассказала, как подключить библиотеку
yandex_mapkit, чтобы внедрить карту в мобильное приложение, и как создать список точек, которые будут отображаться маркерами на карте.Библиотека
yandex_mapkit предлагает виджет карты, YandexMap, и разные инструменты для работы с ней. Сегодня покажу, как отобразить карту и добавить маркеры объектов на нее.YandexMap нужно поместить на страницу, где должна находиться карта. Настройки в YandexMap позволяют управлять внешним видом карты и ее функциями. Вот некоторые из них:
nightModeEnabled включает темную темуzoomGesturesEnabled разрешает масштабировать картуonCameraPositionChanged обрабатывает перемещения положения картыonUserLocationAdded позволяет получить местоположение пользователя Чтобы отобразить маркеры объектов на карте, нужно передать их список в поле
mapObjects виджета YandexMap. YandexMap(
mapObjects: mapObjects,
zoomGesturesEnabled: true,
nightModeEnabled: true,
onMapCreated: (controller) {
// действие при создании карты
},
onCameraPositionChanged: (cameraPosition, reason, finished) {
// действие при изменении положения камеры
},
onUserLocationAdded: (view) {
// действие при определении местоположения пользователя средствами Яндекс карты
},
),
Готово! В следующий раз рассмотрим, как и зачем использовать кластеризацию объектов.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
Привет, это Анна, Team Lead Flutter-команды Friflex
Это четвертый пост из серии о том, как интегрировать карты в мобильные приложения. В прошлый раз я рассказывала, как отобразить маркеры объектов на карте. Сегодня поговорим про кластеризацию объектов.
Иногда маркеры расположены слишком близко и при масштабировании карты наслаиваются друг на друга. При нажатии на один маркер в этом случае может вызываться обработчик из соседнего. Решить эти проблемы поможет кластеризация маркеров.
Кластеры — это объекты карты, которые позволяют при уменьшении масштаба объединить близлежащие маркеры в один объект и отобразить количество объединенных точек.
Для реализации кластеризации в
🔴 mapId — уникальный идентификатор объекта
🔴 placemarks — список маркеров, которые в случае изменения масштаба объединяются в кластеры
🔴 radius — минимальное расстояние между точками на карте, которые остаются разделенными и не входят в кластеры
🔴 minZoom — минимальный уровень масштабирования, при котором отображаются кластеры
Изменить внешний вид кластера можно через обратный вызов
Класс
Чтобы изменить внешний вид в
Параметр
Чтобы отобразить маркеры с кластеризацией на карте, объект
В следующий раз разберем, как управлять стилизацией карты и менять внешний вид внутренних объектов: дорог, ландшафтных зон, мест общего пользования.
#howtoflutter
Это четвертый пост из серии о том, как интегрировать карты в мобильные приложения. В прошлый раз я рассказывала, как отобразить маркеры объектов на карте. Сегодня поговорим про кластеризацию объектов.
Иногда маркеры расположены слишком близко и при масштабировании карты наслаиваются друг на друга. При нажатии на один маркер в этом случае может вызываться обработчик из соседнего. Решить эти проблемы поможет кластеризация маркеров.
Кластеры — это объекты карты, которые позволяют при уменьшении масштаба объединить близлежащие маркеры в один объект и отобразить количество объединенных точек.
Для реализации кластеризации в
yandex_mapkit существует специальный класс — ClusterizedPlacemarkCollection. У него есть обязательные параметры:Изменить внешний вид кластера можно через обратный вызов
onClusterAdded(). Он вызывается каждый раз, когда после изменения масштаба карты создаются новые кластеры или удаляются старые.Cluster — объект кластера, который хранит в себе данные об объединенных маркерах, их количестве и своем внешнем виде.Класс
Cluster реализует метод copyWith(), который обеспечивает иммутабельность текущему объекту кластера. С помощью этого метода можно вернуть новый экземпляр класса. От текущего он будет отличаться параметрами, которые заданы в copyWith().Чтобы изменить внешний вид в
onClusterAdded(), нужно вернуть экземпляр Cluster с измененным через copyWith() параметром appearance. Параметр
appearance типизирован как PlacemarkMapObject, поэтому принцип построения иконки и внешнего вида у кластера такой же, как у обычного маркера.Чтобы отобразить маркеры с кластеризацией на карте, объект
ClusterizedPlacemarkCollection нужно передать в поле mapObjects виджета YandexMap.В следующий раз разберем, как управлять стилизацией карты и менять внешний вид внутренних объектов: дорог, ландшафтных зон, мест общего пользования.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍2
Привет, это Анна, Team Lead Flutter-команды Friflex
Это пятый пост из серии о том, как интегрировать карты в мобильные приложения. В прошлый раз я рассказывала про кластеризацию объектов. Сегодня рассмотрим, как управлять стилизацией карты.
Библиотека
Каждый вложенный json в массиве должен формироваться по ключам:
🔸 tags — набор тегов объектов
🔸 types — типы объектов, к которым должны применяться стили, например, линии, точки, зоны
🔸 elements — составляющие объекта, например, подпись объекта, иконка или текст, и его область
🔸 stylers — параметры стиля объекта, например, видимость, цвет, размер
Чтобы получить нужный стиль, комбинируйте параметры объектов. Например, можно скрыть все объекты торговли и общественного питания и подсветить названия дорог красным цветом.
Больше параметров стилизации описано в документации.
В следующий раз разберем, как построить пешеходный маршрут от точки А до точки Б и отобразить его на карте.
#howtoflutter
Это пятый пост из серии о том, как интегрировать карты в мобильные приложения. В прошлый раз я рассказывала про кластеризацию объектов. Сегодня рассмотрим, как управлять стилизацией карты.
Библиотека
yandex_mapkit предлагает такую возможность при помощи метода setMapStyle у контроллера карты YandexMapController. Метод принимает строку json-массива с заданными параметрами стилей карты. Каждый вложенный json в массиве должен формироваться по ключам:
Чтобы получить нужный стиль, комбинируйте параметры объектов. Например, можно скрыть все объекты торговли и общественного питания и подсветить названия дорог красным цветом.
await mapController.setMapStyle('''
[
{
"tags": {
"any": ["shopping", "food_and_drink"]
},
"stylers": {
"visibility": "off"
}
},
{
"tags": {
"all": ["road"]
},
"elements": ["label.text"],
"stylers": {
"color": "0xFF5757"
}
}
]
''');Больше параметров стилизации описано в документации.
В следующий раз разберем, как построить пешеходный маршрут от точки А до точки Б и отобразить его на карте.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍5❤3
Привет, это Анна, Team Lead Flutter-команды Friflex
В прошлый раз я рассказала, как изменить стиль карты. Сегодня разберем, как построить пешеходный маршрут от точки А до точки Б. Будем использовать инструменты yandex_mapkit.
Чтобы построить маршрут, добавим точки его начала и конца:
Библиотека yandex_mapkit предоставляет доступ к классу YandexPedestrian. Его асинхронный метод requestRoutes позволяет получить список возможных пешеходных маршрутов между заданными точками.
Поле points принимает набор точек RequestPoint, которые должны быть включены в маршрут. Начальную и конечную точку необходимо помечать типом RequestPointType.wayPoint.
Помимо этих двух точек можно добавить несколько промежуточных, тогда маршрут будет построен с учетом их посещения. Им следует задавать тип RequestPointType.viaPoint.
Кроме того, можно задать временные параметры timeOptions, такие как время отправления и время прибытия. Также метод принимает параметр avoidSteep, который отвечает за исключение крутых поворотов на пути.
Вот и построили маршрут. Получили не только геометрию пути, которую можно на карте построить с помощью линий PolylineMapObject, но и различные полезные метаданные. Например, время в пути и расстояние.
#howtoflutter
В прошлый раз я рассказала, как изменить стиль карты. Сегодня разберем, как построить пешеходный маршрут от точки А до точки Б. Будем использовать инструменты yandex_mapkit.
Чтобы построить маршрут, добавим точки его начала и конца:
static const startPoint = Point(latitude: 55.745797, longitude: 37.605862);
static const endPoint = Point(latitude: 55.752754, longitude: 37.604188);
Библиотека yandex_mapkit предоставляет доступ к классу YandexPedestrian. Его асинхронный метод requestRoutes позволяет получить список возможных пешеходных маршрутов между заданными точками.
Поле points принимает набор точек RequestPoint, которые должны быть включены в маршрут. Начальную и конечную точку необходимо помечать типом RequestPointType.wayPoint.
Помимо этих двух точек можно добавить несколько промежуточных, тогда маршрут будет построен с учетом их посещения. Им следует задавать тип RequestPointType.viaPoint.
Кроме того, можно задать временные параметры timeOptions, такие как время отправления и время прибытия. Также метод принимает параметр avoidSteep, который отвечает за исключение крутых поворотов на пути.
var resultWithSession = await YandexPedestrian.requestRoutes(
timeOptions: TimeOptions(departureTime: DateTime.now()),
avoidSteep: true,
points: [
RequestPoint(
point: startPoint,
requestPointType: RequestPointType.wayPoint,
),
RequestPoint(
point: endPoint,
requestPointType: RequestPointType.wayPoint,
),
]);
Вот и построили маршрут. Получили не только геометрию пути, которую можно на карте построить с помощью линий PolylineMapObject, но и различные полезные метаданные. Например, время в пути и расстояние.
#howtoflutter
❤5🔥3👍2