Работа с картой и свои Pin в картах iOS

Рассмотрим пример работы с картами в мобильном приложении на платформе Apple iPad (на iPhone действия будут аналогичные).

Объявим объект MKMapView _mapView. И подпишемся на события:

 _mapView.GetViewForAnnotation += MapViewGetViewForAnnotation;
_mapView.DidSelectAnnotationView += MapViewDidSelectAnnotationView;
_mapView.DidUpdateUserLocation += MapViewDidUpdateUserLocation;
_mapView.DidFailToLocateUser += MapViewDidFailToLocateUser;

В этим событиях мы обработаем создание аннотации, событие при выборе аннотации пользователем, обновление пользовательского местоположения и это же событие с ошибкой. Начнем по порядку с создания аннотации (она же пин или изображение). Метод в моем случае имеет следующее объявление: 

MKAnnotationView MapViewGetViewForAnnotation(MKMapView mapView, NSObject annotation)

Оперировать будем объектом типа BasicMapAnnotation : MKAnnotation. Содержит свойства: Title, ShowImage.

Создаем объект типа MKAnnotationView piView. Далее создаем объект, в зависимости от настроек и требований:

var mapAnnotation = (BasicMapAnnotation)annotation;

if (mapAnnotation.ShowImage)
{
    piView = new MKAnnotationView(mapAnnotation, "pin_" + mapAnnotation.Title);
    UIImage markerImage = UIImage.FromFile("Images/icons/map-image.png");
    piView.Image = markerImage;
}
else
{
    piView = new MKPinAnnotationView(mapAnnotation, "pin_" + mapAnnotation.Title);
    ((MKPinAnnotationView)piView).PinColor = MKPinAnnotationColor.Red;
}

piView.CanShowCallout = true;
piView.Opaque = true;

 Получаем карту следующего вида:

карта в iOS monotouch

 Остальные методы определяем для правильного взаимодействия с пользователем.

 

Комментарии

comments powered by Disqus