iOS百度地图
来源:互联网 发布:韩国bj 知乎 编辑:程序博客网 时间:2024/06/07 02:11
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- //启动引擎 BaiduMapManager
- _mapManager = [[BMKMapManager alloc]init];
- // 如果要关注网络及授权验证事件,设定generalDelegate参数,否则为nil即可
- BOOL ret = [_mapManager start:@” 申请的有效key” generalDelegate: (id<BMKGeneralDelegate>)self];
- if (!ret) {
- NSLog(@”manager start failed!”);
- }
- self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
- // Override point for customization after application launch.
- self.viewController = [[[ViewController alloc] initWithNibName:@”ViewController” bundle:nil] autorelease];
- self.window.rootViewController = self.viewController;
- [self.window makeKeyAndVisible];
- return YES;
- }
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //启动引擎 BaiduMapManager _mapManager = [[BMKMapManager alloc]init]; // 如果要关注网络及授权验证事件,设定generalDelegate参数,否则为nil即可 BOOL ret = [_mapManager start:@" 申请的有效key" generalDelegate: (id<BMKGeneralDelegate>)self]; if (!ret) { NSLog(@”manager start failed!”); } self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. self.viewController = [[[ViewController alloc] initWithNibName:@”ViewController” bundle:nil] autorelease]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; }
用xib 或者手动创建一张地图
在 -(void)viewWillAppear:(BOOL)animated中 要设置代理(或者viewDidLoad的时候创建设置),切记,否则可能会出现方格 不出现地图。
- _myMapView=[[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, Screen.width, Screen.height)];
_myMapView=[[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, Screen.width, Screen.height)];
- [super viewWillAppear:animated];
- [_mapView viewWillAppear];
- _mapView.showsUserLocation = NO;//先关闭显示的定位图层
- _mapView.userTrackingMode = BMKUserTrackingModeNone;//设置定位的状态
- _mapView.showsUserLocation = YES;//显示定位图层
- _mapView.delegate = self;
- _geocodesearch.delegate = self;
- _userLocation.delegate = self;
- _walkingRoutePlanOption.delegate = self;
[super viewWillAppear:animated]; [_mapView viewWillAppear]; _mapView.showsUserLocation = NO;//先关闭显示的定位图层 _mapView.userTrackingMode = BMKUserTrackingModeNone;//设置定位的状态 _mapView.showsUserLocation = YES;//显示定位图层 _mapView.delegate = self; _geocodesearch.delegate = self; _userLocation.delegate = self; _walkingRoutePlanOption.delegate = self;
步行路线代理、定位代理等。
在退出界面的时候 (注意!不能在viewWillDisappear方法中,至于为什么 听别人说的 百度地图与ios会冲突)设置代理为空
- [_mapView viewWillDisappear];
- _mapView.delegate = nil;
- _geocodesearch.delegate = nil; // 此处记得不用的时候需要置nil,否则影响内存的释放
- _userLocation.delegate = nil;
- [_userLocation stopUserLocationService];
- _mapView.showsUserLocation = NO;
- _walkingRoutePlanOption.delegate = nil;
[_mapView viewWillDisappear]; _mapView.delegate = nil; _geocodesearch.delegate = nil; // 此处记得不用的时候需要置nil,否则影响内存的释放 _userLocation.delegate = nil; [_userLocation stopUserLocationService]; _mapView.showsUserLocation = NO; _walkingRoutePlanOption.delegate = nil;
当你用到
- /**
- *打开定位服务
- */
- -(void)startUserLocationService;
/** *打开定位服务 */-(void)startUserLocationService;的时候,就会回调代理方法
- /**
- *用户方向更新后,会调用此函数
- *@param userLocation 新的用户位置
- */
- - (void)didUpdateUserHeading:(BMKUserLocation *)userLocation;
/** *用户方向更新后,会调用此函数 *@param userLocation 新的用户位置 */- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation;
还有一些失败。停止定位等代理方法 请下载百度SDK查看。
- -(void)didUpdateUserLocation:(BMKUserLocation *)userLocation{
- NSLog(@”latitude–%f,longtitude—%f”,userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
- CLLocationDegrees locaLatitude;
- CLLocationDegrees locaLongitude;
- locaLatitude=userLocation.location.coordinate.latitude;//纬度
- locaLongitude=userLocation.location.coordinate.longitude;//精
- BMKCoordinateRegion region;
- //将定位的点居中显示
- region.center.latitude=locaLatitude;
- region.center.longitude=locaLongitude;
- region.span.latitudeDelta = 0.01;
- region.span.longitudeDelta = 0.01;
- [_mapView setRegion:region animated:NO];
- subCoor.latitude = locaLatitude;
- subCoor.longitude = locaLongitude;
- [_mapView setCenterCoordinate:subCoor animated:YES];
- }
-(void)didUpdateUserLocation:(BMKUserLocation *)userLocation{ NSLog(@"latitude--%f,longtitude---%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude); CLLocationDegrees locaLatitude; CLLocationDegrees locaLongitude; locaLatitude=userLocation.location.coordinate.latitude;//纬度 locaLongitude=userLocation.location.coordinate.longitude;//精 BMKCoordinateRegion region; //将定位的点居中显示 region.center.latitude=locaLatitude; region.center.longitude=locaLongitude; region.span.latitudeDelta = 0.01; region.span.longitudeDelta = 0.01; [_mapView setRegion:region animated:NO]; subCoor.latitude = locaLatitude; subCoor.longitude = locaLongitude; [_mapView setCenterCoordinate:subCoor animated:YES];}
根据所得到的 经纬度 可以确定地理位置
- [self geocode:[_latitude doubleValue] withLongitude:[_longitude doubleValue]];
[self geocode:[_latitude doubleValue] withLongitude:[_longitude doubleValue]];
- -(void)geocode:(double)latitude withLongitude:(double)longitude{
- CLLocationCoordinate2D pt = (CLLocationCoordinate2D){0, 0};
- pt = (CLLocationCoordinate2D){latitude, longitude};
- BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
- reverseGeocodeSearchOption.reverseGeoPoint = pt;
- BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
- if(flag)
- {
- NSLog(@”反geo检索发送成功”);
- }
- else
- {
- NSLog(@”反geo检索发送失败”);
- }
- }
-(void)geocode:(double)latitude withLongitude:(double)longitude{ CLLocationCoordinate2D pt = (CLLocationCoordinate2D){0, 0}; pt = (CLLocationCoordinate2D){latitude, longitude}; BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init]; reverseGeocodeSearchOption.reverseGeoPoint = pt; BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption]; if(flag) { NSLog(@"反geo检索发送成功"); } else { NSLog(@"反geo检索发送失败"); }}
其中
- /**
- *根据地理坐标获取地址信息
- *异步函数,返回结果在BMKGeoCodeSearchDelegate的onGetAddrResult通知
- *@param reverseGeoCodeOption 反geo检索信息类
- *@return 成功返回YES,否则返回NO
- */
- - (BOOL)reverseGeoCode:(BMKReverseGeoCodeOption*)reverseGeoCodeOption;
/** *根据地理坐标获取地址信息 *异步函数,返回结果在BMKGeoCodeSearchDelegate的onGetAddrResult通知 *@param reverseGeoCodeOption 反geo检索信息类 *@return 成功返回YES,否则返回NO */- (BOOL)reverseGeoCode:(BMKReverseGeoCodeOption*)reverseGeoCodeOption;然后会调用
- /**
- *返回反地理编码搜索结果
- *@param searcher 搜索对象
- *@param result 搜索结果
- *@param error 错误号,@see BMKSearchErrorCode
- */
- - (void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error;
/** *返回反地理编码搜索结果 *@param searcher 搜索对象 *@param result 搜索结果 *@param error 错误号,@see BMKSearchErrorCode */- (void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error;则为
- -(void) onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
- {
- if (error == 0) {
- //
- self.addArr = [NSString stringWithFormat:@”%@”,result.address];
- _pointAnnotation.subtitle =[NSString stringWithFormat:@”当前位置:%@”,self.addArr];
- if (_pointAnnotation == nil) {
- [XCCommonUtility QQTShowAlertMsg:@”无法获取当前位置,请稍后再试”];
- return ;
- }
- [annotationArrays addObject:_pointAnnotation];
- [_mapView addAnnotations:annotationArrays];
- [self seachWalkRoute];
- }
- }
-(void) onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{ if (error == 0) { // self.addArr = [NSString stringWithFormat:@"%@",result.address]; _pointAnnotation.subtitle =[NSString stringWithFormat:@"当前位置:%@",self.addArr]; if (_pointAnnotation == nil) { [XCCommonUtility QQTShowAlertMsg:@"无法获取当前位置,请稍后再试"]; return ; } [annotationArrays addObject:_pointAnnotation]; [_mapView addAnnotations:annotationArrays]; [self seachWalkRoute]; }}
PS:
result.address即为反地理编码得到的位置。 [annotationArrays addObject:_pointAnnotation]; 是为标注数组。当有多个标注,先把标注添加到数组里 然后再添加至
[_mapView addAnnotations:annotationArrays];文章末尾会说明。
- /**
- *向地图窗口添加标注,需要实现BMKMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View
- *@param annotation 要添加的标注
- */
- - (void)addAnnotation:(id <BMKAnnotation>)annotation;
- /**
- *向地图窗口添加一组标注,需要实现BMKMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View
- *@param annotations 要添加的标注数组
- */
- - (void)addAnnotations:(NSArray *)annotations;
/** *向地图窗口添加标注,需要实现BMKMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View *@param annotation 要添加的标注 */- (void)addAnnotation:(id <BMKAnnotation>)annotation;/** *向地图窗口添加一组标注,需要实现BMKMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View *@param annotations 要添加的标注数组 */- (void)addAnnotations:(NSArray *)annotations;
步行路线
- /**
- *步行路线检索
- *异步函数,返回结果在BMKRouteSearchDelegate的onGetWalkingRouteResult通知
- *@param walkingRoutePlanOption 步行检索信息类
- *@return 成功返回YES,否则返回NO
- */
- -(BOOL)walkingSearch:(BMKWalkingRoutePlanOption*)walkingRoutePlanOption;
- /**
- *返回步行搜索结果
- *@param searcher 搜索对象
- *@param result 搜索结果,类型为BMKWalkingRouteResult
- *@param error 错误号,@see BMKSearchErrorCode
- */
- -(void)onGetWalkingRouteResult:(BMKRouteSearch*)searcher result:(BMKWalkingRouteResult*)result errorCode:(BMKSearchErrorCode)error;
/** *步行路线检索 *异步函数,返回结果在BMKRouteSearchDelegate的onGetWalkingRouteResult通知 *@param walkingRoutePlanOption 步行检索信息类 *@return 成功返回YES,否则返回NO */-(BOOL)walkingSearch:(BMKWalkingRoutePlanOption*)walkingRoutePlanOption;/** *返回步行搜索结果 *@param searcher 搜索对象 *@param result 搜索结果,类型为BMKWalkingRouteResult *@param error 错误号,@see BMKSearchErrorCode */-(void)onGetWalkingRouteResult:(BMKRouteSearch*)searcher result:(BMKWalkingRouteResult*)result errorCode:(BMKSearchErrorCode)error;
直接上代码
- -(void)seachWalkRoute{
- BMKWalkingRoutePlanOption *walkingRoute = [[BMKWalkingRoutePlanOption alloc]init];
- BMKPlanNode* currentNode = [[BMKPlanNode alloc] init];
- currentNode.pt = mianCoor;
- // currentNode.name = @”aaa”; //注意,这里不能为空@”“
- BMKPlanNode* poiNode = [[BMKPlanNode alloc] init];
- poiNode.pt = subCoor;
- // poiNode.name = @”bbb”;//注意,这里不能为空@”“
- walkingRoute.from = currentNode;
- walkingRoute.to = poiNode;
- BOOL flag = [_walkingRoutePlanOption walkingSearch:walkingRoute];
- if (flag == YES) {
- NSLog(@”搜索成功”);
- }else{
- [XCCommonUtility QQTShowAlertMsg:@”暂时无法获取步行路线”];
- NSLog(@”搜索失败”);
- }
- }
- - (void)onGetWalkingRouteResult:(BMKRouteSearch*)searcher result:(BMKWalkingRouteResult*)result errorCode:(BMKSearchErrorCode)error{
- NSArray* array = [NSArray arrayWithArray:_mapView.annotations];
- [_mapView removeAnnotations:array];
- array = [NSArray arrayWithArray:_mapView.overlays];
- [_mapView removeOverlays:array];
- if (error == BMK_SEARCH_NO_ERROR) {
- BMKWalkingRouteLine* plan = (BMKWalkingRouteLine*)[result.routes objectAtIndex:0];
- int size = [plan.steps count];
- int planPointCounts = 0;
- for (int i = 0; i < size; i++) {
- BMKWalkingStep* transitStep = [plan.steps objectAtIndex:i];
- if(i==0){
- MapPointAnnotion* item = [[MapPointAnnotion alloc]init];
- item.coordinate = plan.starting.location;
- item.subtitle =_describe;;
- item.type = 0;
- item.tagNumber = 1;
- [_mapView addAnnotation:item]; // 添加起点标注
- }else if(i==size-1){
- MapPointAnnotion* item = [[MapPointAnnotion alloc]init];
- item.coordinate = plan.terminal.location;
- item.subtitle =[NSString stringWithFormat:@”当前位置:%@”,self.addArr];;
- item.type = 1;
- item.tagNumber = 0;
- [_mapView addAnnotation:item]; // 添加起点标注
- }
- //添加annotation节点
- MapPointAnnotion* item = [[MapPointAnnotion alloc]init];
- item.coordinate = transitStep.entrace.location;
- item.title = transitStep.entraceInstruction;
- item.degree = transitStep.direction * 30;
- item.type = 4;
- // [_mapView addAnnotation:item];
- //轨迹点总数累计
- planPointCounts += transitStep.pointsCount;
- }
- //轨迹点
- BMKMapPoint * temppoints = new BMKMapPoint[planPointCounts];
- int i = 0;
- for (int j = 0; j < size; j++) {
- BMKWalkingStep* transitStep = [plan.steps objectAtIndex:j];
- int k=0;
- for(k=0;k<transitStep.pointsCount;k++) {
- temppoints[i].x = transitStep.points[k].x;
- temppoints[i].y = transitStep.points[k].y;
- i++;
- }
- }
- // 通过points构建BMKPolyline
- BMKPolyline* polyLine = [BMKPolyline polylineWithPoints:temppoints count:planPointCounts];
- [_mapView addOverlay:polyLine]; // 添加路线overlay
- delete []temppoints;
- }
- }
-(void)seachWalkRoute{ BMKWalkingRoutePlanOption *walkingRoute = [[BMKWalkingRoutePlanOption alloc]init]; BMKPlanNode* currentNode = [[BMKPlanNode alloc] init]; currentNode.pt = mianCoor; // currentNode.name = @"aaa"; //注意,这里不能为空@"" BMKPlanNode* poiNode = [[BMKPlanNode alloc] init]; poiNode.pt = subCoor; // poiNode.name = @"bbb";//注意,这里不能为空@"" walkingRoute.from = currentNode; walkingRoute.to = poiNode; BOOL flag = [_walkingRoutePlanOption walkingSearch:walkingRoute]; if (flag == YES) { NSLog(@"搜索成功"); }else{ [XCCommonUtility QQTShowAlertMsg:@"暂时无法获取步行路线"]; NSLog(@"搜索失败"); }}- (void)onGetWalkingRouteResult:(BMKRouteSearch*)searcher result:(BMKWalkingRouteResult*)result errorCode:(BMKSearchErrorCode)error{ NSArray* array = [NSArray arrayWithArray:_mapView.annotations]; [_mapView removeAnnotations:array]; array = [NSArray arrayWithArray:_mapView.overlays]; [_mapView removeOverlays:array]; if (error == BMK_SEARCH_NO_ERROR) { BMKWalkingRouteLine* plan = (BMKWalkingRouteLine*)[result.routes objectAtIndex:0]; int size = [plan.steps count]; int planPointCounts = 0; for (int i = 0; i < size; i++) { BMKWalkingStep* transitStep = [plan.steps objectAtIndex:i]; if(i==0){ MapPointAnnotion* item = [[MapPointAnnotion alloc]init]; item.coordinate = plan.starting.location; item.subtitle =_describe;; item.type = 0; item.tagNumber = 1; [_mapView addAnnotation:item]; // 添加起点标注 }else if(i==size-1){ MapPointAnnotion* item = [[MapPointAnnotion alloc]init]; item.coordinate = plan.terminal.location; item.subtitle =[NSString stringWithFormat:@"当前位置:%@",self.addArr];; item.type = 1; item.tagNumber = 0; [_mapView addAnnotation:item]; // 添加起点标注 } //添加annotation节点 MapPointAnnotion* item = [[MapPointAnnotion alloc]init]; item.coordinate = transitStep.entrace.location; item.title = transitStep.entraceInstruction; item.degree = transitStep.direction * 30; item.type = 4; // [_mapView addAnnotation:item]; //轨迹点总数累计 planPointCounts += transitStep.pointsCount; } //轨迹点 BMKMapPoint * temppoints = new BMKMapPoint[planPointCounts]; int i = 0; for (int j = 0; j < size; j++) { BMKWalkingStep* transitStep = [plan.steps objectAtIndex:j]; int k=0; for(k=0;k<transitStep.pointsCount;k++) { temppoints[i].x = transitStep.points[k].x; temppoints[i].y = transitStep.points[k].y; i++; } } // 通过points构建BMKPolyline BMKPolyline* polyLine = [BMKPolyline polylineWithPoints:temppoints count:planPointCounts]; [_mapView addOverlay:polyLine]; // 添加路线overlay delete []temppoints; }}
第二个方法基本上是直接照搬官方deom的 后面才发现原来这么方便。。刚开始全是自己研究,直到绘制步行路线这块 搞了很久 最后还没搞出来 就去照搬demo了 然后略微修改 分分钟搞定了。。
刚刚所提到的添加标注,可以在路线两端用到。
添加标注必须实现此代理
- /**
- *根据anntation生成对应的View
- *@param mapView 地图View
- *@param annotation 指定的标注
- *@return 生成的标注View
- */
- - (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation;
/** *根据anntation生成对应的View *@param mapView 地图View *@param annotation 指定的标注 *@return 生成的标注View */- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation;
- -(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
- {
- BMKAnnotationView *newAnnotation =[mapView viewForAnnotation:annotation];
- if (newAnnotation==nil && [annotation isKindOfClass:[MapPointAnnotion class]])
- {
- MapPointAnnotion* pointAnnotation = (MapPointAnnotion*)annotation;
- NSString *AnnotationViewID = [NSString stringWithFormat:@”iAnnotation-%d”,pointAnnotation.tagNumber];
- newAnnotation = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
- // 设置颜色
- newAnnotation.tag = pointAnnotation.tagNumber;
- ((BMKPinAnnotationView*)newAnnotation).pinColor = BMKPinAnnotationColorPurple;
- // 从天上掉下效果
- ((BMKPinAnnotationView*)newAnnotation).animatesDrop = NO;
- // 设置可拖拽
- ((BMKPinAnnotationView*)newAnnotation).draggable = NO;
- //设置大头针图标
- if (pointAnnotation.tagNumber == 0) {
- ((BMKPinAnnotationView*)newAnnotation).image = [UIImage imageNamed:@”map_mark_mylocation.png”];
- }else{
- ((BMKPinAnnotationView*)newAnnotation).image = [UIImage imageNamed:@”map_mark.png”];
- }
- UIView *popView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 220, 60)];
- popView.layer.cornerRadius = 3;//设置那个圆角的有多圆
- popView.layer.borderWidth = 1;//设置边框的宽度,当然可以不要
- popView.layer.borderColor = [[UIColor lightGrayColor] CGColor];//设置边框的颜色
- popView.layer.masksToBounds = YES;
- // popView.backgroundColor = [QQTStringPlist colorPlistForKey:@”qqt_bc”];
- [popView setBackgroundColor:[[QQTStringPlist colorPlistForKey:@”qqt_bc”]colorWithAlphaComponent:0.5]];
- UILabel *carName = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 220, 60)];
- carName.text = [annotation subtitle];
- carName.font = [UIFont systemFontOfSize:14];
- carName.textColor = [UIColor blackColor];
- carName.lineBreakMode = kTextLineBreakByCharWrapping;
- carName.textAlignment = kTextAlignmentCenter;
- carName.numberOfLines = 0;
- [popView addSubview:carName];
- BMKActionPaopaoView *pView = [[BMKActionPaopaoView alloc]initWithCustomView:popView];
- pView.frame = CGRectMake(0, 0, 220, 63);
- ((BMKPinAnnotationView*)newAnnotation).paopaoView = nil;
- ((BMKPinAnnotationView*)newAnnotation).paopaoView = pView;
- [newAnnotation setSelected:YES];
- }
- return newAnnotation;
- }
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation{ BMKAnnotationView *newAnnotation =[mapView viewForAnnotation:annotation]; if (newAnnotation==nil && [annotation isKindOfClass:[MapPointAnnotion class]]) { MapPointAnnotion* pointAnnotation = (MapPointAnnotion*)annotation; NSString *AnnotationViewID = [NSString stringWithFormat:@"iAnnotation-%d",pointAnnotation.tagNumber]; newAnnotation = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID]; // 设置颜色 newAnnotation.tag = pointAnnotation.tagNumber; ((BMKPinAnnotationView*)newAnnotation).pinColor = BMKPinAnnotationColorPurple; // 从天上掉下效果 ((BMKPinAnnotationView*)newAnnotation).animatesDrop = NO; // 设置可拖拽 ((BMKPinAnnotationView*)newAnnotation).draggable = NO; //设置大头针图标 if (pointAnnotation.tagNumber == 0) { ((BMKPinAnnotationView*)newAnnotation).image = [UIImage imageNamed:@"map_mark_mylocation.png"]; }else{ ((BMKPinAnnotationView*)newAnnotation).image = [UIImage imageNamed:@"map_mark.png"]; } UIView *popView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 220, 60)]; popView.layer.cornerRadius = 3;//设置那个圆角的有多圆 popView.layer.borderWidth = 1;//设置边框的宽度,当然可以不要 popView.layer.borderColor = [[UIColor lightGrayColor] CGColor];//设置边框的颜色 popView.layer.masksToBounds = YES; // popView.backgroundColor = [QQTStringPlist colorPlistForKey:@"qqt_bc"]; [popView setBackgroundColor:[[QQTStringPlist colorPlistForKey:@"qqt_bc"]colorWithAlphaComponent:0.5]]; UILabel *carName = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 220, 60)]; carName.text = [annotation subtitle]; carName.font = [UIFont systemFontOfSize:14]; carName.textColor = [UIColor blackColor]; carName.lineBreakMode = kTextLineBreakByCharWrapping; carName.textAlignment = kTextAlignmentCenter; carName.numberOfLines = 0; [popView addSubview:carName]; BMKActionPaopaoView *pView = [[BMKActionPaopaoView alloc]initWithCustomView:popView]; pView.frame = CGRectMake(0, 0, 220, 63); ((BMKPinAnnotationView*)newAnnotation).paopaoView = nil; ((BMKPinAnnotationView*)newAnnotation).paopaoView = pView; [newAnnotation setSelected:YES]; } return newAnnotation;}
0 0
- iOS -- 百度地图API
- IOS开发百度地图
- iOS百度地图自定义
- iOS百度地图
- IOS百度地图开发
- iOS百度地图定位
- iOS 百度地图
- iOS百度地图使用
- IOS 百度地图
- IOS百度地图
- iOS- 集成百度地图
- iOS 百度地图
- iOS开发 - 百度地图
- iOS 百度地图
- iOS 百度地图
- IOS 百度地图API
- iOS百度地图 Demo
- iOS 开发 百度地图
- Spring学习笔记(10.Spring Bean装配之Bean的定义域及注解实现)
- swift 之使用第三方框架 cocoapods
- 机器学习小组知识点25:数据预处理之数据集成与数据变换(Data Integration and Transformation)
- 高度自定义dialog
- Error: CERT_NOT_YET_VALID
- iOS百度地图
- MySQL5.6 PERFORMANCE_SCHEMA 说明
- jenkins执行webdrive脚本时,不显示运行的浏览器
- [Spring]基于注解的形式配置Bean
- 冒泡排序
- 初次接触recyclerview记录(1)
- Swift Protobuf 初探 —— 继 XML 后,JSON 也要被淘汰了吗
- hdu1874 Dijkstra学习
- java类转JSON数据注意