Objective c MKAnnotation或MKMapItem

Objective c MKAnnotation或MKMapItem,objective-c,mapkit,mkannotation,mkmapitem,Objective C,Mapkit,Mkannotation,Mkmapitem,MKAnnotation和MKMapItem之间有什么区别 当我想在地图上显示一些有趣的地方时,使用哪一个? 到目前为止,我有一个对象列表,这些对象具有纬度、经度、标题、说明和照片,我希望它们出现在我的地图上。MKAnnotation是一个协议,用于向地图视图提供注释相关信息 我认为您真正想要指的是一个,用于“在地图视图中以视觉方式显示注释” MKMapItem 如果要在地图上显示特定点的注释,我怀疑您要做的是使用MKAnnotationView。MKAnnotation是用于使用MKAnnot

MKAnnotation
MKMapItem
之间有什么区别

当我想在地图上显示一些有趣的地方时,使用哪一个?

到目前为止,我有一个对象列表,这些对象具有
纬度
经度
标题
说明
照片
,我希望它们出现在我的地图上。

MKAnnotation是一个协议,用于向地图视图提供注释相关信息

我认为您真正想要指的是一个,用于“在地图视图中以视觉方式显示注释”

MKMapItem


如果要在地图上显示特定点的注释,我怀疑您要做的是使用MKAnnotationView。

MKAnnotation是用于使用MKAnnotationView显示内容的标记

因此,程序是:

  • 添加MKAnnotation以让地图知道存在条目
  • 等待映射的委托调用viewForAnnotation
  • 在此处设置要显示的注释视图
  • 下面是一个很好的教程(IMO),其中包含详细的代码:


    MKMapItem仅适用于打开外部应用程序的openMapWithItem api



    编辑:MKMapItem有一个placemark属性,它是一个MKAnnotation-因此,如果它不是nil,您可以添加它。(请注意,它可能是零)

    +1感谢您比我更快、更详细。需要指出的是,
    MKAnnotation
    是一个协议,而
    MKMapItem
    是一个类(不实现该协议)。因此,第1步应该说“添加一个实现MKAnnotation协议的对象,让…”。映射视图需要实现该协议的模型对象。它们的视图是独立的。“MKMapItem”有一个类型为“MKPlacemark”的属性“placemark”,该属性实现了“MKAnnotation”,因此您可以将其添加到地图中