百度地图功能有很多,可能刚用的时候会有一些烦恼,但是多看几遍就会觉得容易很多(我靠,感觉自己好啰嗦,想冒充大神),好吧,我其实现在也只是在项目中用过百度地图的一些简单功能,其它的还待研究,今天就说说最基础的定位(这么基础的你还说,是不是看不起我们啊,靠,冤枉啊,我当初做的时候还是有碰到问题的)。
下面正经的介绍:
1、当然是 添加百度地图协议了 <BMKMapViewDelegate,BMKLocationServiceDelegate>
2、定义地图和定位服务属性
@property (nonatomic, strong) BMKMapView *showMapView;
@property (nonatomic, strong) BMKLocationService *showLocationService;
@property (nonatomic, assign) CLLocationCoordinate2D coor;
3、当然必不可少的代理,代理要在viewWillAppear里设置,在viewWillDisappear里取消代理
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.showMapView.delegate = self;
self.showLocationService.delegate = self;
[self.showLocationService startUserLocationService];//info.plist 里面要添加两句话 NSLocationWhenInUseUsageDescription,这句话不能少啊,要不然不能开始定位啊,当时不晓得是不是眼瞎喽,
看api时没看见这句话,搞得郁闷的很,老是不能实现定位
self.showMapView.showsUserLocation = YES;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//把代理取消
self.showMapView.delegate = nil;
self.showLocationService.delegate = nil;
[self.showLocationService stopUserLocationService]; //同样,你们也知道这句话也需要了吧,百度地图就是这么横
self.showMapView.showsUserLocation = NO;
}
下面就要添加手机定位了,添加代码,定位设置
self.showLocationService = [[BMKLocationService alloc]init];
//设置定位精确度
[BMKLocationService setLocationDesiredAccuracy:kCLLocationAccuracyHundredMeters];
//指定最小距离更新(米)
[BMKLocationService setLocationDistanceFilter:100.f];
我靠,还没到重点?/**
* 处理坐标更新
*
* @return 当前手机位置
*/
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation {
[self.showMapView updateLocationData:userLocation];
self.showMapView.centerCoordinate = userLocation.location.coordinate;
self.coor = [userLocation.location coordinate];
//放大地图到自身的经纬度位置
BMKCoordinateRegion viewRegin = BMKCoordinateRegionMake(self.coor, BMKCoordinateSpanMake(0.2f, 0.2f));
BMKCoordinateRegion adjustedRegin = [self.showMapView regionThatFits:viewRegin];
[self.showMapView setRegion:adjustedRegin animated:YES];
}
4、不好意思,太简单了,就再加个回到定位点吧(这么少,太失望了。亲,不退货哟)
在地图上加一个按钮,点击使定位点回到屏幕中心位置
//添加返回定位点按钮代码
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[backBtn setImage:[UIImage imageNamed:@"ditufanhui_"] forState:UIControlStateNormal];
backBtn.frame =CGRectMake(10, self.view.frame.size.height-90, 40, 40);
[self.view addSubview:backBtn];
[self.view bringSubviewToFront:backBtn];
[backBtn addTarget:self action:@selector(comeBackLocation) forControlEvents:UIControlEventTouchUpInside];
//在实现按钮方法就行了,使定位点坐标返回屏幕中心点
- (void)comeBackLocation {
[self.showMapView setCenterCoordinate:self.coor animated:YES];
}
百度地图博大精深,岂是一朝一夕能有所成,这不最近更出一新事,无人驾驶汽车,不过有点不敢坐啊,万一想去医院整个容,
坐百度汽车,直接锁车里拉到百度排名最贵的医院怎么办呐,好害怕的赶脚,敲个代码赚钱不容易啊
我创建了一个交流群,大家可以加一下一起交流 ”进修Android~iOS+“ 群:237311061 大神在里面,而且群里面会分享有一些iOS课件