Есть много разных идей, для реализации которых могут понадобиться карты на мобильных устройствах.
Возможности таких устройств позволяют довольно оперативно получать информацию о местоположении, графические данные и графические преобразования для отображения объёма ландшафта.
В данном статье я расскажу как интегрировать возможность просмотра карт для мобильных устройств на основе Android, на примере Yandex Карт и Google Maps.
Функционал библиотек этих компаний позволяет:
Начнём с отечественного производителя.
Библиотеку Yandex MapKit можно скачать с GitHub'а, там же есть версия и для iOS.
Но прежде чем начать использовать, нам надо получить API-key, для этого идём на почту и пишем письмо в support@mobmaps.yandex.ru, указав в заголовке «Map Kit запрос API-ключа». В ответ вам пришлют письмо с указанием дополнительных ссылок на документацию, на правила использования и собственно с самим ключом в теле письма (а могут и не прислать, кстати).
Пока ждём письмо, берём библиотеку и прикрепляем её к проекту.
После долгого ожидания с кружкой кофе, знакомимся с содержимым письма и информации по ссылкам, берём ключик и пишем в вашем layout'е приложения следующий код:
где заместо «you are key» вставляем полученный ключ. Всё, карта есть.
Далее код показывает, как перемещать карту на заданную координату и использовать зум:
Google
Для использования 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 весьма схож:
Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.
Чтобы немного расширить пример, приложу кусок кода:
Но для использования этого кода, в манифесте следует указать следующее разрешение:
Список используемого материала:
Hello, MapView (developers.android.com)
Google Maps получение Api (временный)
Получение Google Maps API Key
Карты в вашем Android-приложении
Пишем простое приложение с использованием GoogleMap и прокачанным SimpleCursorAdapter
Условия использования сервиса «Yandex Map Kit»
Yandex Map Kit для Android OS в примерах (Максим Хромцов)
Максим Хромцов. Yandex MapKit для Android OS в примерах (Видео)
Возможности таких устройств позволяют довольно оперативно получать информацию о местоположении, графические данные и графические преобразования для отображения объёма ландшафта.
В данном статье я расскажу как интегрировать возможность просмотра карт для мобильных устройств на основе Android, на примере Yandex Карт и Google Maps.
Функционал библиотек этих компаний позволяет:
- Перемещать карту
- Изменять масштаб
- Изменять виды карт
- Получать события от карты
Начнём с отечественного производителя.
Yandex
Библиотеку Yandex MapKit можно скачать с GitHub'а, там же есть версия и для iOS.
Но прежде чем начать использовать, нам надо получить API-key, для этого идём на почту и пишем письмо в support@mobmaps.yandex.ru, указав в заголовке «Map Kit запрос API-ключа». В ответ вам пришлют письмо с указанием дополнительных ссылок на документацию, на правила использования и собственно с самим ключом в теле письма (а могут и не прислать, кстати).
Пока ждём письмо, берём библиотеку и прикрепляем её к проекту.
После долгого ожидания с кружкой кофе, знакомимся с содержимым письма и информации по ссылкам, берём ключик и пишем в вашем layout'е приложения следующий код:
<ru.yandex.yandexmapkit.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="you are key" />
где заместо «you are key» вставляем полученный ключ. Всё, карта есть.
Далее код показывает, как перемещать карту на заданную координату и использовать зум:
final MapView mMapView = (MapView) findViewById(R.id.map);
// Получаем MapController
MapController mMapController = mMapView.getMapController();
// Перемещаем карту на заданные координаты
mMapController.setPositionAnimationTo(new GeoPoint(60.113337, 55.151317));
mMapController.setZoomCurrent(15);
Для использования Google Maps надо совершить куда более изощрённые действия. Я расскажу, как получить debug-key для использования карт, но процесс получения release версии похоже несколько замороченней, но я release ещё не получал.
Для получения debug-key, надо найти ваше хранилище ключей, для отладки.
По-умолчанию, путь будет выглядеть примерно так:
C:\Documents and Settings\<user>\.android\debug.keystore
Затем открываем командную строку, переходим в каталог, куда установлена Java:
cd C:\Program Files\Java\jre6\bin
Затем пишем:
keytool -list -alias androiddebugkey
-keystore <путь_до_хранилища_ключей>.keystore
-storepass android
-keypass android
где путь_до_хранилища_ключей — свой путь до debug.keystore (осторожно, возможны проблемы с пробелами в пути).
После чего в том же окне будет выведен md5-ключ после «Certificate fingerprint (MD5)».
Идём по ссылке и регистрируем код.
После чего Google сгенерирует с нужным кодом для layout и встроенным кодом, берём его и вставляем к себе в layout.
Далее нам, надо наш Activity представить в примерно следующем виде:
package com.fewpeople.geoplanner;
import android.os.Bundle;
import com.google.android.maps.MapActivity;
public class GeoMapActivity extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceData) {
super.onCreate(savedInstanceData);
setContentView(R.layout.geomap);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
Замечу, что Activity наследован должен быть от MapActivity хранящийся в com.google.android.maps.MapActivity.
А в манифесте прописать между тегами
<application></application>
вставить:<uses-library android:name="com.google.android.maps" />
И не забыть, про разрешение доступа в интернет для приложения:
<uses-permission android:name="android.permission.INTERNET" />
В остальном функционал GoogleMaps и YandexMapKit весьма схож:
final MapView mMapView = (MapView) findViewById(R.id.mapview);
// Получаем MapController
MapController mMapController = mMapView.getController();
// Перемещаем карту на заданные координаты
mMapController.animateTo(new GeoPoint(60.113337, 55.151317));
mMapController.setZoom(15);
Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.
Определение собственной позиции
Чтобы немного расширить пример, приложу кусок кода:
final MapView cMapView = (MapView) findViewById(R.id.map);
// Получаем MapController
MapController cMapController = cMapView.getMapController();
// Включаем элементы интерфейса, контролирующие зум
cMapView.setBuiltInZoomControls(true);
// Создаём менеджер местоположения и "слушателя"
final LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
final LocationListener locationListener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onLocationChanged(Location location) {}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
// создаём overlay для отображения своей позиции
cMyLocationOverlay = new MyLocationOverlay(this, cMapView);
cMyLocationOverlay.disableCompass();
cMyLocationOverlay.enableMyLocation();
cMapView.getOverlays().add(cMyLocationOverlay);
// зум
cMapController.setZoomCurrent(15);
// Получаем свои координаты (можно использовать LocationManager.NETWORK_PROVIDER, для иного способа определения позиции)
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// Перемещаем карту на заданные координаты
cMapController.animateTo(new GeoPoint((int) location.getLatitude() * 1000000, (int) location.getLongitude() * 1000000));
Но для использования этого кода, в манифесте следует указать следующее разрешение:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Список используемого материала:
Hello, MapView (developers.android.com)
Google Maps получение Api (временный)
Получение Google Maps API Key
Карты в вашем Android-приложении
Пишем простое приложение с использованием GoogleMap и прокачанным SimpleCursorAdapter
Условия использования сервиса «Yandex Map Kit»
Yandex Map Kit для Android OS в примерах (Максим Хромцов)
Максим Хромцов. Yandex MapKit для Android OS в примерах (Видео)