![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
Есть много разных идей, для реализации которых могут понадобиться карты на мобильных устройствах.
Возможности таких устройств позволяют довольно оперативно получать информацию о местоположении, графические данные и графические преобразования для отображения объёма ландшафта. В данном статье я расскажу как интегрировать возможность просмотра карт для мобильных устройств на основе Android, на примере Yandex Карт и Google Maps. Функционал библиотек этих компаний позволяет:
![]() Начнём с отечественного производителя. Yandex Библиотеку Yandex MapKit можно скачать с GitHub'а, там же есть версия и для iOS. Но прежде чем начать использовать, нам надо получить API-key, для этого идём на почту и пишем письмо в [[email protected]?subject=Map Kit запрос API-ключа][email protected][/email], указав в заголовке «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>.androiddebug.keystore Затем открываем командную строку, переходим в каталог, куда установлена Java: cd C:Program FilesJavajre6bin Затем пишем: 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 в примерах (Видео) Original source: habrahabr.ru (comments, light). Читать дальше -------------------- |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 16.6.2025, 14:07 | |
|