Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
 
Ответить в эту темуОткрыть новую тему
> Разработка под Android / [Из песочницы] Интеграция карт ваше Android-приложение
Decker
сообщение 26.10.2011, 13:08
Сообщение #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


Для использования 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).

Читать дальше


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 16.6.2025, 14:07
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования