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

4,037
-1

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,037
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
23
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. Yandex Map Kitдля Android OS в примерахМаксим ХромцовРазработчикЯ.Субботник, Алматы, 15 октября 2011 года
  2. 2. Android Map Kit Framework • Что это? • Где можно использовать • Функциональные возможности • Архитектура • Проблемы при разработке • Немного об iOS2
  3. 3. Что это ?3
  4. 4. Где можно использовать • Социальные приложения • Информационно-справочные ресурсы • Игры • Навигация4
  5. 5. Функциональные возможности• Управление картой (сдвиг, изменение масштаба)• Показ статичных объектов на карте• Возможность передвигать объекты на карте• Гибкая настройка подсказок к объектам• Отображение местоположения• Отображение пробок и баллов в пробках• Поддержка различных видов карт: схема, гибрид и народная5
  6. 6. Архитектура MapView Map Kit Core MapController OverlayManager6
  7. 7. АрхитектураДобавление в ваш 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
  8. 8. Архитектура Возможности MapController• Перемещение карты;• Изменение масштаба;• Изменение видов карт: схема, гибрид и народная;• Подписка на получение событий от карты;8
  9. 9. Архитектура Работа с MapController … // Получаем объект 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
  10. 10. Архитектура Возможности OverlayManager• Добавление нового слоя на карту;• Удаление слоя с карты;• Отрисовка слоев;• Передача пользовательских сообщений слоям;10
  11. 11. Архитектура Возможности Overlay• Добавление нового объекта на слой;• Удаление объекта со слоя;• Отрисовка объектов;• Действие с выбранным объектом;11
  12. 12. АрхитектураРабота с OverlayManager добовления слоя … // Получаем объект MapView final MapView mMapView = (MapView) findViewById(R.id.map); // Получаем объект MapController MapController mMapController = mapView.getMapController(); // Получаем объект OverlayManager OverlayManager mOverlayManager = mMapController.getOverlayManager(); //Добавляем новый слой mOverlayManager.addOverlay(overlay); … 12
  13. 13. Архитектура Работа с Overlay: добавление объекта…//Создаем новый слойOverlay overlay = new Overlay(mMapController);// Создаем объект слояOverlayItem yandex = new OverlayItem(new GeoPoint(55.734029 , 37.588499), bitmap);// Добавляем объект на слойoverlay.addOverlayItem(yandex);// Добавляем слой на картуmOverlayManager.addOverlay(overlay);… 13
  14. 14. Архитектура Работа с Overlay14
  15. 15. Архитектура Работа с Overlay: добавление балуна…// Создаем объект балунаBalloonItem balloonYandex = null;balloonYandex = new BalloonItem(new GeoPoint(43.244276, 76.951331), bitmap);balloonYandex.setText("<b>Я.Субботник</b><br/>Отель Достык");// Добавляем балунyandex.setBalloonItem(balloonYandex);…15
  16. 16. Архитектура Работа с Overlay : получение GeoCodepublic class MyHistoryGeoCode implementsGeoCodeListener {…//Вызываем запрос на получение GeoCodemMapController.getDownloader().getGeoCode(this, new GeoPoint(43.244276, 76.951331)); …// Обрабатываем ответ о GeoCodepublic boolean onFinishGeoCode(GeoCode geoCode) { if (geoCode!= null){ // Информация по данной точке }… 16
  17. 17. Проблемы при разработке• Отображение объектов из разных слоев;• Взаимодействие с объектами из разных слоев; 17
  18. 18. Немного об iOS Архитектура• Преемственность с Apple Map Kit Framework – MKMapView -> YMKMapView – MKMapViewDelegate -> YMKMapViewDelegate – MKAnnotation -> YMKAnnotation – MKAnnotationView -> YMKAnnotationView – MKPinAnnotationView -> YMKPinAnnotationView18
  19. 19. Немного об iOS Архитектура • YMKMapView19
  20. 20. Немного об iOS Архитектура • YMKAnnotation • YMKPinAnnotationView20
  21. 21. Немного об iOS Добавление объекта на картуОбъект, удовлетворяющий протоколуYMKAnnotation @interface PointAnnotation : NSObject <YMKAnnotation> + (id)pointAnnotation; @property (nonatomic, copy) NSString * title; @property (nonatomic, copy) NSString * subtitle; @property (nonatomic, assign) YMKMapCoordinate coordinate; @end21
  22. 22. Немного об 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
  23. 23. Немного об 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
  24. 24. Полезные ссылки http://legal.yandex.ru/mapkit http://clubs.ya.ru/mobilemaps https://github.com/yandexmobile/yandexmapkit-ios https://github.com/yandexmobile/yandexmapkit-android24
  25. 25. Максим ХромцовРазработчикmksaint13@yandex-team.ru

×