Я не использовал MonoTouch, но использование SDK такое же, как и iOS, я считаю.
MKAnnotation
- это протокол / интерфейс, на котором будет основана ваша модель данных аннотаций. Вы также можете использовать предопределенный класс MKPointAnnotation
(который реализует интерфейс MKAnnotation
) для объектов модели данных аннотации вместо создания пользовательского класса, если вам нужны только title
, subtitle
и coordinate
.
MKAnnotationView
- это то, как должен отображаться вид аннотации, и задается в методе делегата вида viewForAnnotation
карты (не создается встроенным). Представления аннотаций можно повторно использовать между несколькими объектами аннотаций, которые будут иметь одинаковый внешний вид (например, изображение булавки). Поэтому теоретически один экземпляр MKAnnotationView
может использоваться для нескольких объектов аннотаций, которые реализуют MKAnnotation
(при условии, что они не все отображаются на экране одновременно).
Таким образом, вы создаете объект на основе MKAnnotation
и передаете его в вызове addAnnotation
(то есть. AddAnnotationObject
). Затем в методе делегата viewForAnnotation
вы создаете и возвращаете экземпляр объекта MKAnnotationView
.
"MKPinAnnotation" (на самом деле MKPinAnnotationView
) - это предопределенный подкласс MKAnnotationView
, который обеспечивает изображение вывода по умолчанию. Вы можете вернуть экземпляр MKPinAnnotationView
в методе делегата viewForAnnotation
вместо разработки пользовательского представления.
Место, где вы могли бы создать нужную вспомогательную кнопку выноски, находится в методе делегата viewForAnnotation
. Вы создаете UIButton
типа UIButtonTypeDetailDisclosure
и устанавливаете его как представление аннотации rightCalloutAccessoryView
.
Нажатие кнопки будет обрабатываться в методе делегата calloutAccessoryControlTapped
представления карты, который предоставляет ссылку на представление аннотации и аннотацию, в которой находится выноска.
Указанные имена методов приведены в iOS, но имена в MonoTouch должны быть похожими.