ios 点生成线路 百度地图_iOS地图SDK

刘弘济
2023-12-01

简介

百度地图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;

}

 类似资料: