我想知道是否有人知道MKAnnotationView类的任何子类。在苹果文档中,他们说一个例子是MKPinAnnotationView,所以我想知道是否有其他预先创建的子类,如用于跟踪设备当前位置的子类。如果有人有关于创建我自己的MKAnnotationView类子类的提示,那么也很好。
谢谢, bubster
答案 0 :(得分:9)
如果有人仍然对此感兴趣:
您可以使用Objective-C运行时函数获取类的所有子类,如下所述:http://cocoawithlove.com/2010/01/getting-subclasses-of-objective-c-class.html
从MKAnnotationView继承的其他类是:
MKTransitCalloutView,MKAdAnnotationView,MKUserLocationView,MKUserLocationBreadCrumbView和MKPinAnnotationView
其中MKPinAnnotationView是唯一记录的。所有其他都是Apple在内部使用的私人课程。
答案 1 :(得分:7)
我不知道任何其他模板,但这并不意味着它们不存在。 :)
无论如何,这里是如何创建自定义的:
创建符合MKAnnotation
协议的新类。您需要具有名为NSString*
和title
的{{1}}类型的两个实例变量,以及名为coordinate的类型subtitle
之一和适当的setter方法(例如属性)。这些字符串将显示在标注中。在mapView的委托中,以与为UITableView实现数据源类似的方式实现方法CLLocationCoordinate2D
。也就是说,通过标识符使annotationView出列,设置新属性(例如,用于右侧附件视图的UIButtonTypeDetailDisclosure类型的按钮)。您需要添加要在偏移下方显示的图像。只需使用MKAnnotationView的-mapView:viewForAnnotation:
属性即可。自定义图像的中心将放置在指定的坐标处,因此您可能需要提供偏移:image
以下是一些示例代码:
aView.centerOffset = CGPointMake(0, -20)