百度地图 ----------冒泡加按钮

IOS百度地图视角跳到用户当前位置


IOS百度地图开发实时路况

IOS开发百度地图自动导航


- (void)viewDidLoad {

  [super viewDidLoad];
   _cacheAnnotationMDic=[[NSMutableDictionary alloc]init];
   // 添加一个PointAnnotation
   BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
   
   CLLocationCoordinate2D coor;
   coor.latitude = 39.915;
   coor.longitude = 116.404;
   annotation.coordinate = coor;
   
   annotation.title = @"test";
   annotation.subtitle = @"this is a test!";

   [mapView addAnnotation:annotation];
   BMKPointAnnotation* annotation1 = [[BMKPointAnnotation alloc]init];
   CLLocationCoordinate2D coor1;
   coor1.latitude = 41.015;
   coor1.longitude = 116.404;
   annotation1.coordinate = coor1;
   
   annotation1.title = @"test1";
   annotation1.subtitle = @"this is a test!";
   
   [mapView addAnnotation:annotation1];
}
//当选中一个annotation views时,调用此接口
- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view
{
   NSLog(@"选中一个annotation views:%f,%f",view.annotation.coordinate.latitude,view.annotation.coordinate.longitude);
}
//当取消选中一个annotation views时,调用此接口

- (void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view{
   NSLog(@"取消选中一个annotation views");
}
//*在地图View将要启动定位时,会调用此函数

- (void)mapViewWillStartLocatingUser:(BMKMapView *)mapView
{
   NSLog(@"地图View将要启动定位");
}
- (void)viewWillAppear:(BOOL)animated
{
   // 设置mapView的Delegate
   mapView.delegate = self;
}

// Override
////根据anntation生成对应的View
//- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation
//{
//   if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {
//      BMKPinAnnotationView *newAnnotation = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myAnnotation"];  
//      newAnnotation.pinColor = BMKPinAnnotationColorPurple;  
//      newAnnotation.animatesDrop = YES;
//      newAnnotation.draggable = YES;
//      
//      return newAnnotation;  
//   }
//   return nil;
//}
//原理类似 UITableView 循环委托加载 CellforRowWithIndexPath
- (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id <BMKAnnotation>)annotation
{
   NSLog(@"aaaaaaaaaaaaaaaaaaaaaaaaaa");
   static NSString *AnnotationViewID = @"annotationViewID";
   
   BMKAnnotationView *annotationView = [view dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
   if (annotationView == nil) {
       annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];

      ((BMKPinAnnotationView*)annotationView).animatesDrop = YES;

//气泡框左侧显示的View,可自定义

       annotationView.leftCalloutAccessoryView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_location.png"]];
       
       UIButton *selectButton = [UIButton buttonWithType:UIButtonTypeCustom];
       [selectButton setFrame:(CGRect){260,0,50,40}];
       [selectButton setTitle:@"确定" forState:UIControlStateNormal];
       annotationView.rightCalloutAccessoryView =selectButton;//气泡框右侧显示的View 可自定义
       [selectButton setBackgroundColor:[UIColor redColor]];
       [selectButton setShowsTouchWhenHighlighted:YES];
       [selectButton addTarget:self action:@selector(Location_selectPointAnnotation) forControlEvents:UIControlEventTouchUpInside];
   }
   //以下三行代码用于将自定义视图和标记绑定,一一对应,目的是当点击,右侧自定义视图时,能够知道点击的是那个标记
   annotationView.rightCalloutAccessoryView.tag = _cacheAnnotationTag;
   [_cacheAnnotationMDic setObject:annotation forKey:[NSNumber numberWithInteger:_cacheAnnotationTag]];
   _cacheAnnotationTag++;
   
   //如果是我的位置标注,则允许用户拖动改标注视图,并赋予绿色样式 处于
   if ([annotation.title isEqualToString:@"test1"]) {
       ((BMKPinAnnotationView *)annotationView).pinColor = BMKPinAnnotationColorGreen;//标注呈绿色样式
       [annotationView setDraggable:YES];//允许用户拖动
       [annotationView setSelected:YES animated:YES];//让标注处于弹出气泡框的状态
   }else
   {
       ((BMKPinAnnotationView *)annotationView).pinColor = BMKPinAnnotationColorRed;
   }
   
   annotationView.centerOffset = CGPointMake(0, -(annotationView.frame.size.height * 0.5));//不知道干什么用的
   annotationView.annotation = annotation;//绑定对应的标点经纬度
   annotationView.canShowCallout = TRUE;//允许点击弹出气泡框
   return annotationView;
}
-(void)Location{
   NSLog(@"点击气泡上的确定按钮");
}

//当mapView新添加annotation views时,调用此接口
- (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
   NSLog(@"mapView新添加annotation views");
}
//*在地图View停止定位后,会调用此函数
- (void)mapViewDidStopLocatingUser:(BMKMapView *)mapView
{
   NSLog(@"地图View停止定位");
}
//当点击annotation view弹出的泡泡时,调用此接口

- (void)mapView:(BMKMapView *)mapView annotationViewForBubble:(BMKAnnotationView *)view
{
   NSLog(@"点击annotation view弹出的泡泡");
}
//*定位失败后,会调用此函数
- (void)mapView:(BMKMapView *)mapView didFailToLocateUserWithError:(NSError *)error
{
   NSLog(@"定位失败");
}
IOS开发百度地图API分享-用点生成路线,导航,气泡响应
搜索附近的宾馆,停车场,加油站等等都是用以下代码实现
- (void)onGetPoiResult:(NSArray*)poiResultList searchType:(int)type errorCode:(int)error
{
   if (error == BMKErrorOk) {
      BMKPoiResult* result = [poiResultList objectAtIndex:0];
      for (int i = 0; i < result.poiInfoList.count; i++) {
         BMKPoiInfo* poi = [result.poiInfoList objectAtIndex:i];
         BMKPointAnnotation* item = [[BMKPointAnnotation alloc]init];
         item.coordinate = poi.pt;
         item.title = poi.name;
         [_mapView addAnnotation:item];
         [item release];
      }
   }

}



-(IBAction)onClickOk
{
   NSArray* array = [NSArray arrayWithArray:_mapView.annotations];
   [_mapView removeAnnotations:array];
   array = [NSArray arrayWithArray:_mapView.overlays];
   [_mapView removeOverlays:array];
   BOOL flag = [_search poiSearchInCity:_cityText.text withKey:_keyText.text pageIndex:0];
   if (!flag) {
      NSLog(@"search failed!");
   }
}
//更新坐标

-(void)mapView:(BMKMapView *)mapView didUpdateUserLocation:(BMKUserLocation *)userLocation{
   self._latitude = userLocation.coordinate.latitude;
   self._longitude = userLocation.coordinate.longitude;
   if (!testcheckMap) {
       //给view中心定位
       BMKCoordinateRegion region;
       region.center.latitude = userLocation.location.coordinate.latitude;
       region.center.longitude = userLocation.location.coordinate.longitude;
       region.span.latitudeDelta = 0.02;
       region.span.longitudeDelta = 0.02;
       _mapView.region  = region;
       //加个当前坐标的小气泡
       [_search reverseGeocode:userLocation.location.coordinate];
   }
}
//定位停止(最好不要停止,不然没有办法得到实施路况~)
-(void)mapViewDidStopLocatingUser:(BMKMapView *)mapView{
   
   //添加圆形覆盖
   //   BMKCircle* circle = [BMKCircle circleWithCenterCoordinate:mapView.centerCoordinate radius:1000];
   //   [mapView addOverlay:circle];
   
   //标记我的位置
   BMKUserLocation *userLocation = mapView.userLocation;
   userLocation.title = @"我的位置";
   [_mapView addAnnotation:userLocation];
   [mapView setShowsUserLocation:YES];
   
}
将百度地图视角切换到当前坐标(可以直接在位置移动后的方法里面写!)
-(void)Region{
   CLLocationCoordinate2D coor;
   coor.latitude = self._latitude;
   coor.longitude = self._longitude;
   NSDictionary *tip = BMKBaiduCoorForWgs84(coor);
   CLLocationCoordinate2D coor1= BMKCoorDictionaryDecode(tip);
   BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake(coor1, BMKCoordinateSpanMake(0.05,0.05));
   BMKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];
   [_mapView setRegion:adjustedRegion animated:YES];
}
清除地图上所有痕迹和路线
-(void)clereOldYJDH{
   NSArray* array = [NSArray arrayWithArray:_mapView.annotations];
   [_mapView removeAnnotations:array];
   array = [NSArray arrayWithArray:_mapView.overlays];
   [_mapView removeOverlays:array];
   [self Region];

}


----------------------------------以下是根据经纬度得到街道地址-----------------------------

- (void)viewDidLoad

{

[super viewDidLoad];

mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 92, 320, 388)];

[self.view addSubview:mapView];

mapView.delegate = self;

[mapView setShowsUserLocation:YES];//显示定位的蓝点儿

_search = [[BMKSearch alloc]init];//search类,搜索的时候会用到

_search.delegate = self;

fromeText.text=@”新中关”;

CGSize screenSize = [[UIScreen mainScreen] currentMode].size;

if ((fabs(screenSize.width – 640.0f) < 0.1)

&& (fabs(screenSize.height – 960.0f) < 0.1))

{

isRetina = TRUE;

}

pathArray=[[NSMutableArray array] retain];  //用来记录路线信息的,以后会用到

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值