- Интеграция карт в ваше Android-приложение
- Yandex
- Определение собственной позиции
- Yandex mapkit android example
- Latest commit
- Git stats
- Files
- README.md
- Yandex mapkit android example
- Unact / yandex_mapkit Go PK Goto Github PK
- yandex_mapkit’s Introduction
- Contributors
- Stargazers
- Watchers
- Forkers
- yandex_mapkit’s Issues
- При запуске приложения в Visula Studio Code(Flutter) выводит «Exited(1)» в консоли
- Add support for binary images as Placemark icon
- Request location permissions
- Memory leak on iOS
- [!] Unable to determine Swift version for the following pods..
- как геокодингу внести координаты? #112
- Comments
- sviter-pro commented Jul 26, 2019 •
- elricbk commented Jul 26, 2019
- sviter-pro commented Jul 27, 2019
- elricbk commented Jul 27, 2019
- sviter-pro commented Jul 27, 2019 •
- elricbk commented Jul 30, 2019
Интеграция карт в ваше Android-приложение
Есть много разных идей, для реализации которых могут понадобиться карты на мобильных устройствах.
Возможности таких устройств позволяют довольно оперативно получать информацию о местоположении, графические данные и графические преобразования для отображения объёма ландшафта.
В данном статье я расскажу как интегрировать возможность просмотра карт для мобильных устройств на основе Android, на примере Yandex Карт и Google Maps.
Функционал библиотек этих компаний позволяет:
- Перемещать карту
- Изменять масштаб
- Изменять виды карт
- Получать события от карты
Начнём с отечественного производителя.
Yandex
Библиотеку Yandex MapKit можно скачать с GitHub’а, там же есть версия и для iOS.
Но прежде чем начать использовать, нам надо получить API-key, для этого идём на почту и пишем письмо в support@mobmaps.yandex.ru, указав в заголовке «Map Kit запрос API-ключа». В ответ вам пришлют письмо с указанием дополнительных ссылок на документацию, на правила использования и собственно с самим ключом в теле письма (а могут и не прислать, кстати).
Пока ждём письмо, берём библиотеку и прикрепляем её к проекту.
После долгого ожидания с кружкой кофе, знакомимся с содержимым письма и информации по ссылкам, берём ключик и пишем в вашем layout’е приложения следующий код:
где заместо «you are key» вставляем полученный ключ. Всё, карта есть.
Далее код показывает, как перемещать карту на заданную координату и использовать зум:
Для использования Google Maps надо совершить куда более изощрённые действия. Я расскажу, как получить debug-key для использования карт, но процесс получения release версии похоже несколько замороченней, но я release ещё не получал.
Для получения debug-key, надо найти ваше хранилище ключей, для отладки.
По-умолчанию, путь будет выглядеть примерно так:
Затем открываем командную строку, переходим в каталог, куда установлена Java:
где путь_до_хранилища_ключей — свой путь до debug.keystore (осторожно, возможны проблемы с пробелами в пути).
После чего в том же окне будет выведен md5-ключ после «Certificate fingerprint (MD5)».
Идём по ссылке и регистрируем код.
После чего Google сгенерирует с нужным кодом для layout и встроенным кодом, берём его и вставляем к себе в layout.
Далее нам, надо наш Activity представить в примерно следующем виде:
Замечу, что Activity наследован должен быть от MapActivity хранящийся в com.google.android.maps.MapActivity.
А в манифесте прописать между тегами вставить:
И не забыть, про разрешение доступа в интернет для приложения:
В остальном функционал GoogleMaps и YandexMapKit весьма схож:
Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.
Определение собственной позиции
Чтобы немного расширить пример, приложу кусок кода:
Но для использования этого кода, в манифесте следует указать следующее разрешение:
Источник
Yandex mapkit android example
Yandex Map Kit for Android
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Эта версия больше не поддерживается, актуальную инфрмацию о новых версиях MapKit можно найти по ссылкам:
В этом репозитории находится тестовое приложение, демонстрирующее возможности Yandex Map Kit.
- Добавлено новое API уOverlayItem setOverlayItemListener #256
- Исправлена ошибка #253
- Исправлена ошибка #249
- Исправлена ошибка #240
- Исправлена ошибка #234
- Исправлена ошибка утечки #243
- Исправлена ошибка #240
- Добавили свойство в MapEvent isGesture() #237
- Исправлены ошибки при отображении карты
- Добавлен arm64-v8a и x86_64 архитектуры
- Исправлены ошибки отображения кнопок на карте
- Добавлен пример работы с запросом разрешений на получения геопозиции
- Исправлены ошибки, приводившие к падениям
- Удалены все запросы разрешений, кроме получения геопозиции
- Клонируйте репозиторий примера git clone https://github.com/yandexmobile/yandexmapkit-android.git
- В папке yandexmapkit-sample находится пример приложения который через gradle зависимость подключает мапкит
- Данные проекты уже настроены для работы в среде Eclipse
- Импортируйте данные проекты в среду Eclipse или Android Studio
- Выполняете Gradle Sync для проекта.
- Подставьте свой API ключ во все layout где используется объект MapView
- Всё готово к запуску тестового проекта
Запуск из командной строки.
Миграция с первой версии
- При создании OverlayItem необходимо в конструкторе вместо объекта Bitmap передавать Drawable, можно воспользоваться new BitmapDrawable(you_bitmap)
- При создании объекта BalloonItem необходимо в конструкторе передавать Context (необходимый для загрузки ресурсов)
- Исправить использования интерфейса с OnBallonListener на OnBalloonListener и добавить новые методы из данного интерфейса
- Исправить имя метода у BalloonItem с setOnBallonListener на setOnBalloonViewClickListener
- Необходимо изменить логику работы интерфейса OnBalloonListener метода onBallonClick на onBalloonViewClick
Интеграция с Яндекс.Картами
Документация по интеграции с мобильными Яндекс.Картами выложена на tech.yandex.ru
Также у этого проекта есть:
- Wiki, в которой содержится полезная информация о Yandex Map Kit.
- JavaDoc, который находится в yandexmapkit-library/doc. В нем содержится описание классов и методов Yandex Map Kit.
Если вы хотите сообщить об ошибке или предложить идею в развитии, то напишите об этом, пожалуйста, в Issues.
Источник
Yandex mapkit android example
A flutter plugin for displaying yandex maps on iOS and Android.
Disclaimer: This project uses Yandex Mapkit which belongs to Yandex
When using Mapkit refer to these terms of use
Generate your API Key
- Go to https://developer.tech.yandex.com
- Create a MapKit mobile SDK key
Initializing for iOS
- Add import YandexMapsMobile to ios/Runner/AppDelegate.swift
- Add YMKMapKit.setApiKey(«YOUR_API_KEY») inside func application in ios/Runner/AppDelegate.swift
- Specify your API key in the application delegate ios/Runner/AppDelegate.swift
- For Flutter version less than 1.22 add io.flutter.embedded_views_preview
inside tag in ios/Runner/Info.plist - Uncomment platform :ios, ‘9.0’ in ios/Podfile
For Swift 4.0 and lesser
For Swift 4.2 and greater
Initializing for Android
- Add dependency implementation ‘com.yandex.android:maps.mobile:4.0.0-full’ to android/app/build.gradle
- Add permissions and to android/app/src/main/AndroidManifest.xml
- Add import com.yandex.mapkit.MapKitFactory; to android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
- MapKitFactory.setApiKey(«YOUR_API_KEY»); inside method onCreate in android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
- Specify your API key in the application delegate android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
For Java projects
For Kotlin projects
For usage examples refer to example app
This project only supports Android V2 embedding. V1 support has been completly dropped. If you are creating a new flutter project then you are automatically using V2 and don’t have to worry. Other projects are strongly recommended to migrate to V2. See this page for more details.
YandexMapkit always works with one language only.
Due to native constraints after the application is launched it can’t be changed.
Currently native library doesn’t support Silicon Mac.
If you receive this type of error
Add in your projects Build Settings in section Excluded Architectures for Debug this line — arm64
This way XCode won’t try to build for Silicon Macs iOS Simulators
Источник
Unact / yandex_mapkit Go PK Goto Github PK
Flutter implementation of YandexMapkit
License: MIT License
Java 26.16% Ruby 0.84% Swift 20.18% Objective-C 0.11% Dart 52.71% flutter yandex-maps
yandex_mapkit’s Introduction
A flutter plugin for displaying yandex maps on iOS and Android.
Disclaimer: This project uses Yandex Mapkit which belongs to Yandex
When using Mapkit refer to these terms of use
Generate your API Key
- Go to https://developer.tech.yandex.com
- Create a MapKit mobile SDK key
Initializing for iOS
- Add import YandexMapsMobile to ios/Runner/AppDelegate.swift
- Add YMKMapKit.setApiKey(«YOUR_API_KEY») inside func application in ios/Runner/AppDelegate.swift
- Specify your API key in the application delegate ios/Runner/AppDelegate.swift
- For Flutter version less than 1.22 add io.flutter.embedded_views_preview
inside tag in ios/Runner/Info.plist - Uncomment platform :ios, ‘9.0’ in ios/Podfile
For Swift 4.0 and lesser
For Swift 4.2 and greater
Initializing for Android
- Add dependency implementation ‘com.yandex.android:maps.mobile:4.0.0-full’ to android/app/build.gradle
- Add permissions and to android/app/src/main/AndroidManifest.xml
- Add import com.yandex.mapkit.MapKitFactory; to android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
- MapKitFactory.setApiKey(«YOUR_API_KEY»); inside method onCreate in android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
- Specify your API key in the application delegate android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
For Java projects
For Kotlin projects
For usage examples refer to example app
This project only supports Android V2 embedding. V1 support has been completly dropped. If you are creating a new flutter project then you are automatically using V2 and don’t have to worry. Other projects are strongly recommended to migrate to V2. See this page for more details.
YandexMapkit always works with one language only.
Due to native constraints after the application is launched it can’t be changed.
Currently native library doesn’t support Silicon Mac.
If you receive this type of error
Add in your projects Build Settings in section Excluded Architectures for Debug this line — arm64
This way XCode won’t try to build for Silicon Macs iOS Simulators
- iOS Support
- Android Support
- Working with Placemarks/Polylines/Polygons/Circles — adding, updating, removing, tap events, styling
- Working with collections of map objects
- Working with clusters
- Moving around the map
- Setting map bounds
- Showing current user location
- Styling the map
- Address suggestions
- Basic driving routing
- Basic address direct/reverse search
Contributors
Stargazers
Watchers
Forkers
yandex_mapkit’s Issues
При запуске приложения в Visula Studio Code(Flutter) выводит «Exited(1)» в консоли
При попытке запуска приложения выводит Exited(1) и никакой ошибки не выводиться. Не знаю почему это происходит, это произошло когда добавил Yandex MapKit в проект, а до этого запускался спокойно. Данный код снизу уже отдельный проект для теста.
MainActivity.Kt:
package com.example.yandex_mapkit_example
Использование в приложении:
Что нужно сделать, чтобы решить данную проблему?
Add support for binary images as Placemark icon
Right now we can only use assets images as Placemark icons, however, it is common use case when you want to change color of icon before adding to map, or just use dynamic icons preloaded from server-side.
It will be great to have ability to use binary images as Placemark icon instead of just assets path
Request location permissions
Memory leak on iOS
Hello! I found a problem, which does not allow me (I think, many other developers can have this problem too) to use Yandex MapKit on iOS and publish the app with this SDK at the AppStore because reviewers often stumble on crushes of the app at review and reject the app by this purpose.
I research this situation and compared memory usage on iOS with Google Maps (Native view too), and found, that YM used more and more memory until the memory is overflow and the app crashes.
This is two links Yandex MapKit Video Example on iPhone 6S and Google Maps Video Example on iPhone 6S, and information about my environment:
yandex_mapkit version is 0.3.10
with console output from the XCode:
I hope that you can help solve this problem. And in addition, I found two (first and a second) similar issues, but don’t try at now solutions from there (I’ll try it in few next days)
For example, I want to try this code from first issue:
[!] Unable to determine Swift version for the following pods..
if I try to start debugging on iOS — I get this issue.
Источник
как геокодингу внести координаты? #112
Comments
sviter-pro commented Jul 26, 2019 •
пытаюсь получить адрес по указанным координатам? как это лучше сделать?
но мне бьет ошибку:
java.lang.NullPointerException: Attempt to invoke interface method ‘com.yandex.mapkit.search.Session com.yandex.mapkit.search.SearchManager.submit(com.yandex.mapkit.geometry.Point, java.lang.Integer, com.yandex.mapkit.search.SearchOptions, com.yandex.mapkit.search.Session$SearchListener)’ on a null object reference
The text was updated successfully, but these errors were encountered:
elricbk commented Jul 26, 2019
Замечания не относятся конкретно к ошибке, но без них всё равно не заработает:
- Runnable , по-моему, не нужен, вызывать методы MapKit нужно на UI-потоке
- Обратный поиск требует на вход только один SearchType
- Метод submit возвращает сессию, которую нужно сохранять
sviter-pro commented Jul 27, 2019
|
elricbk commented Jul 27, 2019
Это SearchManager сохраняется. Сессию тоже нужно сохранять:
где session – это поле класса.
sviter-pro commented Jul 27, 2019 •
хорошо! спасибо! а почему ругается на это:
searchManager = SearchFactory.getInstance().createSearchManager(
SearchManagerType.ONLINE)
вот такой ошибкой:
все понял! надо было инициализацию поставить: SearchFactory.initialize(this);
elricbk commented Jul 30, 2019
В примере кода обратный поиск делается по топонимам ( SearchType.GEO ), а метаданные извлекаются для организации ( .getItem(BusinessObjectMetadata.class) ) и почему-то для транспорта, что совсем смысла для обратного поиска не имеет.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник