MapKit框架:6-复杂地图标注示例
本节的示例代码,在MKMapView上实现了添加自定义样式的地图标注,该地图标注的图标使用自定义图片,点击图标后,可以在附加视图的左右两侧各添加一个按钮。
准备工作
在进行地图标注样式定制之前,需要提前完成如下代码的编写:
- 初始化一个MKMapView类的对象,并设置属性;
- 初始化一个MKPointAnnotation类的对象,设置其属性,并添加到MKMapView对象上;
- 设置MKMapView对象的代理对象,通常为控制器对象,然后设置控制器对象遵守MKMapViewDelegate协议
- 添加MKMapView到控制器视图上。
实现地图标注的定制
使用自定义样式的地图标注,需要在MKMapViewDelegate代理协议中的mapView:viewForAnnotation:方法中完成。
- (nullable MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
if ([annotation isKindOfClass:[MKPointAnnotation class]]) {
MKAnnotationView *customAnnotationView = (MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomPinAnnotationView"];
if (customAnnotationView == nil){
customAnnotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
}
//设置标注的图片
customAnnotationView.image = [UIImage imageNamed:@"99logo"];
//设置点击标注可以显示更多信息
customAnnotationView.canShowCallout = YES;
//右侧按钮定制
UIButton *rightButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
rightButton.backgroundColor = [UIColor redColor];
[rightButton setTitle:@"前往" forState:UIControlStateNormal];
customAnnotationView.rightCalloutAccessoryView = rightButton;
//左侧按钮定制
UIButton *leftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
leftButton.backgroundColor = [UIColor blueColor];
[leftButton setTitle:@"详情" forState:UIControlStateNormal];
customAnnotationView.leftCalloutAccessoryView = leftButton;
return customAnnotationView;
}
return nil;
}
运行后,我们可以看到地图标注的样式如下所示:
示例代码
https://github.com/99ios/17.3.6
文章发布时间为: August 8th , 2017 at 05:49 pm
最后编辑时间为: September 15th , 2017 at 08:13 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 15th , 2017 at 08:13 am
本文由 99ios 创作,转载请注明出处