25
Я.Субботник, Алматы, 15 октября 2011 года Разработчик Максим Хромцов Yandex Map Kit для Android OS в примерах

Максим Хромцов "Yandex MapKit для Android OS в примерах"

  • Upload
    yandex

  • View
    4.318

  • Download
    9

Embed Size (px)

DESCRIPTION

15 октября 2011, Я.Субботник в Алматы Максим Хромцов Yandex "MapKit для Android OS в примерах" О докладе: Разработка приложений на основе Yandex MapKit для Android OS. Внедрение Yandex Map в приложения для увеличения функциональности. В докладе рассматривается описание основных модулей, на основе примеров объясняется принцип работы и их взаимодействие. Также рассказывается, с какими трудностями мы столкнулись во время разработки и как мы их решили.

Citation preview

Page 1: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Я.Субботник, Алматы, 15 октября 2011 года

Разработчик Максим Хромцов

Yandex Map Kit для Android OS в примерах

Page 2: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Android Map Kit Framework

• Что это?

• Где можно использовать

• Функциональные возможности

• Архитектура

• Проблемы при разработке

• Немного об iOS 2

Page 3: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Что это ?

3

Page 4: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Где можно использовать

• Социальные приложения

• Информационно-справочные ресурсы

• Игры

• Навигация

4

Page 5: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Функциональные возможности • Управление картой (сдвиг, изменение

масштаба)

• Показ статичных объектов на карте

• Возможность передвигать объекты на карте

• Гибкая настройка подсказок к объектам

• Отображение местоположения

• Отображение пробок и баллов в пробках

• Поддержка различных видов карт: схема, гибрид и народная

5

Page 6: Максим Хромцов "Yandex MapKit для Android OS в примерах"

MapView

Архитектура

Map Kit Core

MapController

OverlayManager

6

Page 7: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

Добавление в ваш layout <ru.yandex.yandexmapkit.MapView

android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey=“you are api key" />

7

Page 8: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

• Перемещение карты;

• Изменение масштаба;

• Изменение видов карт: схема, гибрид и народная;

• Подписка на получение событий от карты;

8

Возможности MapController

Page 9: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

… // Получаем объект MapView final MapView mMapView = (MapView) findViewById(R.id.map); // Получаем объект MapController MapController mMapController = mapView.getMapController(); // Перемещаем карту на Отель Достык mMapController. setPositionAnimationTo(new GeoPoint(43.244276, 76.951331)); // Изменяем зум mMapController.setZoomCurrent(17); …

9

Работа с MapController

Page 10: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

• Добавление нового слоя на карту;

• Удаление слоя с карты;

• Отрисовка слоев;

• Передача пользовательских сообщений слоям;

10

Возможности OverlayManager

Page 11: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

• Добавление нового объекта на слой;

• Удаление объекта со слоя;

• Отрисовка объектов;

• Действие с выбранным объектом;

11

Возможности Overlay

Page 12: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

… // Получаем объект MapView final MapView mMapView = (MapView) findViewById(R.id.map); // Получаем объект MapController MapController mMapController = mapView.getMapController(); // Получаем объект OverlayManager OverlayManager mOverlayManager = mMapController.getOverlayManager(); //Добавляем новый слой mOverlayManager.addOverlay(overlay); …

12

Работа с OverlayManager добовления слоя

Page 13: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

… //Создаем новый слой Overlay overlay = new Overlay(mMapController); // Создаем объект слоя OverlayItem yandex = new OverlayItem(new GeoPoint(55.734029 , 37.588499), bitmap); // Добавляем объект на слой overlay.addOverlayItem(yandex); // Добавляем слой на карту mOverlayManager.addOverlay(overlay); …

13

Работа с Overlay: добавление объекта

Page 14: Максим Хромцов "Yandex MapKit для Android OS в примерах"

14

Архитектура

Работа с Overlay

Page 15: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

… // Создаем объект балуна BalloonItem balloonYandex = null; balloonYandex = new BalloonItem(new GeoPoint(43.244276, 76.951331), bitmap); balloonYandex.setText("<b>Я.Субботник</b><br/>Отель Достык"); // Добавляем балун yandex.setBalloonItem(balloonYandex); …

15

Работа с Overlay: добавление балуна

Page 16: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Архитектура

public class MyHistoryGeoCode implements GeoCodeListener { … //Вызываем запрос на получение GeoCode mMapController.getDownloader().getGeoCode (this, new GeoPoint(43.244276, 76.951331)); … // Обрабатываем ответ о GeoCode public boolean onFinishGeoCode(GeoCode geoCode) { if (geoCode!= null){ // Информация по данной точке } …

16

Работа с Overlay : получение GeoCode

Page 17: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Проблемы при разработке

• Отображение объектов из разных слоев;

• Взаимодействие с объектами из разных слоев;

17

Page 18: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Немного об iOS

• Преемственность с Apple Map Kit Framework

– MKMapView -> YMKMapView

– MKMapViewDelegate -> YMKMapViewDelegate

– MKAnnotation -> YMKAnnotation

– MKAnnotationView -> YMKAnnotationView

– MKPinAnnotationView -> YMKPinAnnotationView

Архитектура

18

Page 19: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Немного об iOS

• YMKMapView

Архитектура

19

Page 20: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Немного об iOS

• YMKAnnotation

• YMKPinAnnotationView

Архитектура

20

Page 21: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Немного об iOS

Объект, удовлетворяющий протоколу YMKAnnotation

@interface PointAnnotation : NSObject <YMKAnnotation> + (id)pointAnnotation; @property (nonatomic, copy) NSString * title; @property (nonatomic, copy) NSString * subtitle; @property (nonatomic, assign) YMKMapCoordinate coordinate; @end

Добавление объекта на карту

21

Page 22: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Немного об iOS

- (void)configureAndInstallAnnotations { self.metroAnnotation = [PointAnnotation pointAnnotation]; self.metroAnnotation.coordinate = YMKMapCoordinateMake(43.244276, 76.951331); self.metroAnnotation.title = @"Я.Субботник"; self.metroAnnotation.subtitle = @"Отель Достык"; [self.mapView addAnnotation:self.metroAnnotation]; self.mapView.selectedAnnotation = self.metroAnnotation; }

Добавление объекта на карту

22

Page 23: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Немного об iOS

- (YMKAnnotationView *)mapView:(YMKMapView *)mapView viewForAnnotation:(id<YMKAnnotation>)annotation { static NSString * identifier = @"pointAnnotation"; YMKPinAnnotationView * view = (YMKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; if (view == nil) { view = [[[YMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease]; view.canShowCallout = YES; UIButton * rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; view.rightCalloutAccessoryView = rightButton; } view.annotation = self.metroAnnotation; return view; }

Добавление объекта на карту

23

Page 24: Максим Хромцов "Yandex MapKit для Android OS в примерах"

24

https://github.com/yandexmobile/yandexmapkit-android

https://github.com/yandexmobile/yandexmapkit-ios

Полезные ссылки

http://clubs.ya.ru/mobilemaps

http://legal.yandex.ru/mapkit

Page 25: Максим Хромцов "Yandex MapKit для Android OS в примерах"

Разработчик

[email protected]

Максим Хромцов