第一步:创建项目;然后导入百度地图skd;
第二步:在pch文件中导入头文件和密匙,密匙在百度开放平台中申请;
注意应用名称要和你的项目名称一致
#define APPKEY @"Gbv6KMLAvtADmbP1uGNmE7SK"在使用sdk的时候根据需要倒入下面的文件头,百度地图在说明文件的类参考中列出了所有类,结构,联合以及接口定义。
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件
#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件
#import <BaiduMapAPI_Search/BMKSearchComponent.h>//引入检索功能所有的头文件
#import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h>//引入云检索功能所有的头文件
#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入计算工具所有的头文件
#import <BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周边雷达功能所有的头文件
#import < BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件
最后在appDelegate.m文件中加载地图管理者
@interface AppDelegate ()<CLLocationManagerDelegate>
{
//定位
CLLocationManager *_locationManager;//用于获取位置
CLLocation *_checkLocation;//用于保存位置信息
}
self.window.rootViewController = [[JFTabBarViewController alloc]init];
//无界面的计算经纬度获取地址
[self setupLocationManger];
//初始化百度地图
[self setUpBaiMap];
return YES;
}
/**
* 这里处理非图形界面的地位方法
*/
-(void)setupLocationManger{
_latitude = LATITUDE_DEFAULT;
_longitude = LONGITUDE_DEFAULT;
_locationManager = [[CLLocationManager alloc]init];
if ([CLLocationManager locationServicesEnabled]) {
NSLog(@"开始定位");
_locationManager.delegate = self;
// distanceFilter是距离过滤器,为了减少对定位装置的轮询次数,位置的改变不会每次都去通知委托,而是在移动了足够的距离时才通知委托程序
// 它的单位是米,这里设置为至少移动1000再通知委托处理更新;
_locationManager.distanceFilter = 200.0;
// kCLLocationAccuracyBest:设备使用电池供电时候最高的精度
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
//ios8+以上要授权,并且在plist文件中添加NSLocationWhenInUseUsageDescription,NSLocationAlwaysUsageDescription,值可以为空
if (IOS_VERSION >=8.0) {//ios8+,不加这个则不会弹框
[_locationManager requestWhenInUseAuthorization];//使用中授权
[_locationManager requestAlwaysAuthorization];
}
[_locationManager startUpdatingLocation];
}else{
NSLog(@"定位失败,请确定是否开启定位功能");
// _locationManager.delegate = self;
// // distanceFilter是距离过滤器,为了减少对定位装置的轮询次数,位置的改变不会每次都去通知委托,而是在移动了足够的距离时才通知委托程序
// // 它的单位是米,这里设置为至少移动1000再通知委托处理更新;
// _locationManager.distanceFilter = 200.0;
// // kCLLocationAccuracyBest:设备使用电池供电时候最高的精度
// _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// [_locationManager startUpdatingLocation];
}
}
#pragma mark - CLLocationManagerDelegate
//ios 6.0sdk以上
//-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
// NSLog(@"didUpdateToLocation+++");
// //此处locations存储了持续更新的位置坐标值,取最后一个值为最新位置,如果不想让其持续更新位置,则在此方法中获取到一个值之后让locationManager stopUpdatingLocation
// CLLocation *cl = [locations lastObject];
// _latitude = cl.coordinate.latitude;
// _longitude = cl.coordinate.longitude;
// NSLog(@"纬度--%f",_latitude);
// NSLog(@"经度--%f",_longitude);
//}
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
NSLog(@"定位失败");
}
-(void)setUpBaiMap{
//百度地图
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8) {
//由于IOS8中定位的授权机制改变 需要进行手动授权
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
//获取授权认证
[locationManager requestAlwaysAuthorization];
[locationManager requestWhenInUseAuthorization];
[locationManager startUpdatingLocation];
}
_mapManager = [[BMKMapManager alloc]init];
// 如果要关注网络及授权验证事件,请设定 generalDelegate参数
BOOL ret = [_mapManager start:@"Gbv6KMLAvtADmbP1uGNmE7SK" generalDelegate:nil];
if (!ret) {
NSLog(@"manager start failed!");
}
}
然后就可以整场运行地图了。