- Интеграция карт в ваше Android-приложение
- Yandex
- Определение собственной позиции
- Use map api android
- Использование ключей API
- Подготовка
- Как создать ключи API
- Cloud Console
- Cloud SDK
- Как добавить в приложение ключ API
- Как задать ограничения для ключей API
- Консоль
- Cloud SDK
- Maps SDK for Android
- Requirements
- Java compatibility
- Use with other Mapbox tools
- Static maps
- Mapbox Studio
- Conditions
- Attribution
Интеграция карт в ваше 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 весьма схож:
Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.
Определение собственной позиции
Чтобы немного расширить пример, приложу кусок кода:
Но для использования этого кода, в манифесте следует указать следующее разрешение:
Источник
Use map api android
maps.me Android API: Getting Started
NOTE: We have changed the name of our maps from MapsWithMe to MAPS.ME, but left all references below unchanged.
MapsWithMe Android API (hereinafter referred to as «API Library» or just «library») provides interface for client application to perform next tasks:
- Show one or more points on offline map of MapsWithMe Application
- Come back to the client application after selecting specific point on the map, by sending PendingIntent with point data when user asks for more information by pressing «More Info» button in MapsWithMe Application
- Map screen branding : your application’s icon and name (or custom title) will be placed at the top.
Thus, you can provide two way communication between your application and MapsWithMe, using MapsWithMe to show points of interest (POI) and providing more information in your app.
Please refer to sample application for demo or see our travel guide apps as an API integration example.
It is supposed that you are familiar with Android Development, and you have Android SDK and Eclipse (or another IDE of your choice) installed. You should be familiar with concept of Intents, library projects, and PendingIntents (recommended) as well. Your application must target at least android sdk version 9.
First step is to clone repository or download it as an archive.
When your are done you find two folders: lib and sample-app-capitals. First one is a library project that you should add to your project. You don’t need any additional permissions in your AndroidManifest.xml to use API library, so you can write real code straight away, calling for different MapsWithMeApi methods (more details below).
Classes Overview and HOW TO
Core classes you will work with are:
- com.mapswithme.maps.api.MapsWithMeApi — static class with methods such as showPointOnMap(Activity, double, double, String) etc.
- com.mapswithme.maps.api.MWMPoint — model of POI, includes lat, lon, name, id, and style data.
- com.mapswithme.maps.api.MWMResponse — helps you to extract response from MapsWithMe by applying MWMResponse.extractFromIntent(Intent) to Intent. Contains MWMPoint data.
Show Points on the Map
The simplest usage:
For multiple points use MWMPoint class:
Ask MapsWithMe to Call my App
We support PendingIntent interaction (just like Android native NotificationManager does). You should specify ID for each point to distinguish it later, and PentingIntent that MapsWithMe will send back to your application when user press «More Info» button :
How should I detect if user has MapsWithMe installed?
MapsWithMeApi.isMapsWithMeInstalled(Context) will return true if user has Lite or Pro version that supports API call installed.
Which versions of MapsWithMe support API calls?
All versions since 2.4.0 and above support API calls.
What will happen if I call for MapsWithMeApi.showPoint() but MapsWithMe application is not installed?
Nothing serious. API library will show simple dialog with gentle offer to download MapsWithMe. You can see how it looks like below.
Sample Code and Application
API Code License
Copyright (c) 2019, MY.COM B.V. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS «AS IS» AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Источник
Использование ключей API
В этой статье рассказывается, как создать ключ API для Maps SDK для Android, добавить его в приложение и защитить приложение с помощью ограничений ключа. Вы должны добавлять ключи API во все приложения, в которых используется комплект SDK.
Подготовка
Чтобы начать использовать Maps SDK для Android, вам необходимо создать проект с платежным аккаунтом и включить Maps SDK для Android. Подробнее о процессе настройки в Cloud Console…
Как создать ключи API
Ключ API – это уникальный идентификатор, который используется для аутентификации запросов, связанных с вашим проектом. Он нужен для учета использования API и оплаты. С вашим проектом должен быть связан хотя бы один ключ API.
Чтобы создать его, выполните следующие действия.
Cloud Console
Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
Появится диалоговое окно с созданным ключом API.
Новый ключ API можно будет найти в разделе Ключи API на странице Учетные данные.
Не забудьте настроить ограничения для ключа API, прежде чем использовать его в рабочей среде.
Cloud SDK
Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:
Как добавить в приложение ключ API
В этом разделе рассказывается, как настроить безопасный вызов ключа API вашим приложением. Вводить ключ API в систему управления версиями нежелательно, поэтому мы рекомендуем хранить его в файле local.properties , который находится в корневом каталоге проекта. Подробнее о файле local.properties рассказывается в описании файлов свойств Gradle.
Чтобы вам было проще работать, используйте Secrets Gradle Plugin для Android.
Чтобы установить плагин и настроить хранение ключа API, выполните следующие действия:
- В Android Studio откройте файл build.gradle корневого уровня и добавьте в элемент dependencies , принадлежащий элементу buildscript , указанный ниже код.
- Откройте файл build.gradle уровня приложения и добавьте в элемент plugins указанный ниже код.
- Сохраните файл и синхронизируйте проект с Gradle.
- Откройте файл local.properties в каталоге уровня проекта и добавьте в этот файл приведенный ниже код. Укажите вместо YOUR_API_KEY свой ключ API.
- Сохраните файл и синхронизируйте проект с Gradle.
- В файле AndroidManifest.xml найдите раздел com.google.android.geo.API_KEY и измените android:value attribute следующим образом:
Примечание. Как показано выше, рекомендуемое имя метаданных для ключа API – com.google.android.geo.API_KEY . Ключ с таким именем может использоваться для аутентификации нескольких API созданных на основе Google Карт для платформы Android, включая Maps SDK for Android. Для обеспечения обратной совместимости API также поддерживает имя com.google.android.maps.v2.API_KEY . Это устаревшее имя обеспечивает аутентификацию только для Android Maps API версии 2. Приложение позволяет указать только одно из имен в метаданных ключа API. Если указаны оба имени, API вызывает исключение.
Как задать ограничения для ключей API
Ограничения повышают безопасность, поскольку с помощью ключа API можно будет отправлять только авторизованные запросы. Мы настоятельно рекомендуем следовать инструкциям по настройке ограничений для ключей API. Дополнительные сведения приводятся в рекомендациях по работе с ключами API.
При настройке ограничений ключа API вам потребуется указать цифровой отпечаток сертификата SHA-1 ключа, который использовался для подписи в приложении. Существует два типа сертификатов.
- Сертификат для отладки. Его следует использовать исключительно при тестировании приложений и работе с кодом до публикации. Не пытайтесь опубликовать приложение, подписанное с помощью сертификата для отладки. Этот сертификат создается автоматически при выполнении отладочной сборки приложения с помощью инструментов Android SDK.
- Сертификат для выпуска. Используйте этот сертификат, когда будете готовы разместить ваше приложение в магазине. Он создается с помощью инструментов Android SDK при выполнении сборки в процессе подготовки к выпуску.
Дополнительную информацию о цифровых сертификатах вы найдете в руководстве по добавлению подписи в приложения.
О том, как получить цифровой отпечаток сертификата, можно прочитать в разделе об аутентификации клиентов. Если вы используете функцию подписания приложений в Google Play, вы можете найти цифровой отпечаток сертификата на странице подписания приложений в Play Console.
Чтобы задать ограничение для ключа API, выполните следующие действия:
Консоль
Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
- Ограничения для приложений:
- Выберите Приложения для Android.
- Нажмите + Название пакета и цифровой отпечаток.
- Укажите название пакета и цифровой отпечаток сертификата SHA-1. Пример:
- Ограничения для API:
- Нажмите Применить ограничения для ключа.
- В раскрывающемся списке Выберите API нажмите Maps SDK для Android. Если Maps SDK для Android там нет, его необходимо включить.
Cloud SDK
Список существующих ключей.
Снятие ограничений с существующего ключа.
Настройка новых ограничений для существующего ключа.
Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Источник
Maps SDK for Android
Current version: v 10.1.0 View changelog
The Mapbox Maps SDK for Android is a library for embedding highly customized maps within Android applications.
Use custom map styles. Start with one of our Mapbox-designed styles that are optimized for various use cases or design your own custom style in Mapbox Studio. Enhance the experience with 3D terrain. You can even alter your map’s style at runtime.
Add your own custom data to the map. Whether you’re adding markers to a map to include a store locator right in your app or creating compelling data visualizations, the Maps SDK gives you control over how you display data on your map. You can style map features at runtime based on data properties, user interaction, or device settings.
Your browser doesn’t support HTML5 video. Open link to the video.
Requirements
The Mapbox Maps SDK for Android is compatible with applications that:
- Are built using the Android SDK 21 or higher.
- Use Java 8 for sourceCompatibility and targetCompatibility , as shown in the installation guide.
Java compatibility
The Mapbox Maps SDK for Android is built with Kotlin, the official language recommended by Google for Android development. Kotlin is 100% interoperable with Java.
Applications with a Java codebase can interact properly with the public APIs exposed by Mapbox SDKs for Android. If you experience any issues using the Mapbox Maps SDK for Android with Java, contact us.
Use with other Mapbox tools
Use the Mapbox Maps SDK for Android with other Mapbox products. Mix and match other tools and plugins to create a location-savvy application to your exact specifications.
Static maps
The Mapbox Maps SDK for Android includes methods to generate a static snapshot of an existing map within your application. Use the MapSnapshotter class to create a static raster image of a map, without having to make a request to another API.
The Java SDK is also available for applications that need direct access to the Mapbox Static Images API.
Mapbox Studio
The Mapbox Maps SDK is compatible with Mapbox Studio. Design a map that seamlessly matches your brand and application design, then infuse it with your own custom data all within the Mapbox Studio web interface.
Conditions
Attribution
You must include the Mapbox wordmark on any map that uses the Mapbox Maps SDK for Android. You must display attribution on maps unless the map’s data comes entirely from non-Mapbox sources.
You may adjust the position of the Mapbox wordmark and attribution notice, but they must stay visible on the map. You may also change the background and text color of the attribution notice to match your design aesthetics, but all information must be legible.
You may not otherwise alter the Mapbox wordmark or text attribution notice.
Источник