MKMapView 相当于一个容器 。可以展示 MKAnnotationView..
要使用它需要设置 数据源代理
_mapView.delegate = self;
它的数据源对象就是
符合 MKAnnotation 协议的对象
包含
@protocol MKAnnotation// Center latitude and longitude of the annotion view.// The implementation of this property must be KVO compliant.@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;@optional// Title and subtitle for use by selection UI.@property (nonatomic, readonly, copy) NSString *title;@property (nonatomic, readonly, copy) NSString *subtitle;// Called as a result of dragging an annotation view.- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate NS_AVAILABLE(10_9, 4_0);@end
这里不得不关联下 最常用的tableView 控件
它也需要数据源 和 代理
需要把数据源 加载到 tableViewCell 上 显示
对比mapView ,它的数据源是 (id<MKAnnotation>)annotation
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id<MKAnnotation>)annotation {
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath...
对比下 是不是很相识 。。
同样的还有 uipickerView
下面实现自定义 MKAnnotationView 跟自定义UITabelViewcell 差不多
实现 不点击annotation 也能显示calloutview
添加 代理方法
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views { for (MKAnnotationView *annoView in views) { MKAnnotation *anno = annoView.annotation; [mv selectAnnotation:anno animated:YES]; }}