百度地图使用第五讲:大头针使用(地图标注)
1、加载基本地图视图展示2、创建一个大头针模型(主要是经纬度)涉及到的类有BMKPointAnnotation、BMKAnnotationView、BMKPinAnnotationView
BMKPointAnnotation:大头针模型,用来描述大头针的坐标等信息;
BMKAnnotationView:标注视图,包含标注上面的标题、子标题、及相关按钮等;
BMKPinAnnotationView:大头针视图,继承自BMKAnnotationView,可以理解为大头针是一种特殊的标注;
3、将大头针添加到地图,到此为止事实上已经搞定,地图上能正常显示刚刚所标注的大头针了,如下效果图所示:
4、此外,mapView还有另外两个代理方法可以对大头针进行后续的处理,比如大头针颜色,动画效果(从天而降)等
- (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
5、关键代码示例#import "SAViewController.h"
#import "BMapKit.h"
@interface SAViewController () <BMKPoiSearchDelegate, BMKMapViewDelegate>
@property (nonatomic, strong) BMKMapView *mapView; // 地图
@property (nonatomic, strong) BMKPointAnnotation *pointAnnotation; // 大头针
@end
@implementation SAViewController
- (void)viewDidLoad
{
;
// 创建一个地图添加到控制器视图上
self.mapView.frame = self.view.frame;
;
// 创建一个大头针模型,设置大头针经纬坐标
self.pointAnnotation = [ init];
self.pointAnnotation.title = @"大头针";
self.pointAnnotation.subtitle = @"一个神奇的东西";
self.pointAnnotation.coordinate = (CLLocationCoordinate2D){39.9, 116.4};
;
}
- (void)viewWillAppear:(BOOL)animated
{
;
;
}
- (void)viewWillDisappear:(BOOL)animated
{
;
;
}
#pragma mark mapView的Get方法,延时加载
- (BMKMapView *)mapView
{
if (!_mapView) {
_mapView = [ init];
_mapView.delegate = self;
}
return _mapView;
}
#pragma mark 添加标注时调用
- (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
NSLog(@"地图添加标注时会调用!");
}
#pragma mark 为标注生成新的视图
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
{
NSLog(@"地图重新生成标注蒙层时调用!");
// 类似TableViewCell,可从缓存中重复利用的View
BMKPinAnnotationView *annotationView;
annotationView = (BMKPinAnnotationView *);
if (!annotationView) {
// BMKPinAnnotationView是BMKAnnotationView的子类(大头针标注类)
annotationView = [ initWithAnnotation:annotation reuseIdentifier:@"Annotation"];
// 设置大头针的颜色为绿色
annotationView.pinColor = BMKPinAnnotationColorGreen;
}
return annotationView;
}
@end
页:
[1]