简介
百度地图SDK支持多种地图覆盖物,帮助您展示更丰富的地图。
地图覆盖物:地图标注(Marker)、几何图形(点、折线、弧线、多边形等)、POI检索结果覆盖物、线路规划结果覆盖物等;
功能展示
#import
#import
- (void)viewDidLoad {
[super viewDidLoad];
BMKMapView *mapView = [[BMKMapView alloc] initWithFrame:self.view.bounds];
//设置mapView的代理
mapView.delegate = self;
//将mapView添加到当前视图中
[self.view addSubview:mapView];
//初始化标注类BMKPointAnnotation的实例
BMKPointAnnotation *annotation = [[BMKPointAnnotation alloc] init];
//设置标注的经纬度坐标
annotation.coordinate = CLLocationCoordinate2DMake(39.915, 116.404);
//设置标注的标题
annotation.title = @"标注";
//副标题
annotation.subtitle = @"可拖拽";
/**
当前地图添加标注,需要实现BMKMapViewDelegate的-mapView:viewForAnnotation:方法
来生成标注对应的View
@param annotation 要添加的标注
*/
[mapView addAnnotation:annotation];
}
#pragma mark - BMKMapViewDelegate
/**
根据anntation生成对应的annotationView
@param mapView 地图View
@param annotation 指定的标注
@return 生成的标注View
*/
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id)annotation {
if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {
/**
根据指定标识查找一个可被复用的标注,用此方法来代替新创建一个标注,返回可被复用的标注
*/
BMKPinAnnotationView *annotationView = (BMKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"annotationViewIdentifier"];
if (!annotationView) {
/**
初始化并返回一个annotationView
@param annotation 关联的annotation对象
@param reuseIdentifier 如果要重用view,传入一个字符串,否则设为nil,建议重用view
@return 初始化成功则返回annotationView,否则返回nil
*/
annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotationViewIdentifier"];
//annotationView显示的图片,默认是大头针
//annotationView.image = nil;
/**
默认情况下annotationView的中心点位于annotation的坐标位置,可以设置centerOffset改变
annotationView的位置,正的偏移使annotationView朝右下方移动,负的朝左上方,单位是像素
*/
annotationView.centerOffset = CGPointMake(0, 0);
/**
默认情况下, 弹出的气泡位于annotationView正中上方,可以设置calloutOffset改变annotationView的
位置,正的偏移使annotationView朝右下方移动,负的朝左上方,单位是像素
*/
annotationView.calloutOffset = CGPointMake(0, 0);
//是否显示3D效果,标注在地图旋转和俯视时跟随旋转、俯视,默认为NO
annotationView.enabled3D = NO;
//是否忽略触摸时间,默认为YES
annotationView.enabled = YES;
/**
开发者不要直接设置这个属性,若设置,需要在设置后调用BMKMapView的-(void)mapForceRefresh;方法
刷新地图,默认为NO,当annotationView被选中时为YES
*/
annotationView.selected = NO;
//annotationView被选中时,是否显示气泡(若显示,annotation必须设置了title),默认为YES
annotationView.canShowCallout = YES;
/**
显示在气泡左侧的view(使用默认气泡时,view的width最大值为32,
height最大值为41,大于则使用最大值)
*/
annotationView.leftCalloutAccessoryView = nil;
/**
显示在气泡右侧的view(使用默认气泡时,view的width最大值为32,
height最大值为41,大于则使用最大值)
*/
annotationView.rightCalloutAccessoryView = nil;
/**
annotationView的颜色: BMKPinAnnotationColorRed,BMKPinAnnotationColorGreen,
BMKPinAnnotationColorPurple
*/
annotationView.pinColor = BMKPinAnnotationColorRed;
//设置从天而降的动画效果
annotationView.animatesDrop = YES;
//当设为YES并实现了setCoordinate:方法时,支持将annotationView在地图上拖动
annotationView.draggable = YES;
//当前view的拖动状态
//annotationView.dragState;
}
return annotationView;
}
return nil;
}