iOS - 百度地图SDK集成(地理定位)

一、注册账号
打开百度开放者平台,注册账号,有账号直接登录。
二、申请密钥
1.点击申请密钥
iOS - 百度地图SDK集成(地理定位)_第1张图片
2、创建应用
iOS - 百度地图SDK集成(地理定位)_第2张图片
iOS - 百度地图SDK集成(地理定位)_第3张图片
注意:安全码的填写规则。

这就是密钥
iOS - 百度地图SDK集成(地理定位)_第4张图片

三、配置环境
1、在Xcode的Project -> Edit Active Target -> Build Setting -> Other Linker Flags中添加-ObjC。

2、info,plist设置ATS,
App Transport Security Settings,Allow Arbitrary Loads 设置yes。
3、添加白名单
LSApplicationQueriesSchemes,加baidumap,

4、需要在info.plist里添加(以下二选一,两个都添加默认使用NSLocationWhenInUseUsageDescription):
NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述
NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述

5、引入所需的系统库

CoreLocation.framework
QuartzCore.framework、
OpenGLES.framework、
SystemConfiguration.framework、
CoreGraphics.framework、
Security.framework、
libsqlite3.0.tbd、
CoreTelephony.framework 、
libstdc++.6.0.9.tbd

在Xcode的Project -> Active Target ->Build Phases ->Link Binary With Libraries,添加这几个系统库即可。

四、添加相应的代码。

在AppDelegate.m文件中的代码。

#import 
#import 

@interface AppDelegate ()
{
    BMKMapManager* _mapManager;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    _mapManager = [[BMKMapManager alloc]init];
    // 如果要关注网络及授权验证事件,请设定     generalDelegate参数
    BOOL ret = [_mapManager start:BaiDu_Map_key  generalDelegate:nil];
    if (!ret) {
        NSLog(@"manager start failed!");
    }

    return YES;
}
#import 
#import 
#import 


@interface TourismMapVC ()<BMKMapViewDelegate,BMKLocationServiceDelegate>
{
    BMKLocationService* _locService;
    BMKMapView* _mapView;
}


@end

@implementation TourismMapVC

-(void)viewWillAppear:(BOOL)animated {
    [_mapView viewWillAppear];
    _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放
    _locService.delegate = self;
}

-(void)viewWillDisappear:(BOOL)animated {
    [_mapView viewWillDisappear];
    _mapView.delegate = nil; // 不用时,置nil
    _locService.delegate = nil;
}



- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"地图";

    //初始化地图
    _mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
    _mapView.delegate =self;
    //设置地图的显示样式
    _mapView.mapType = BMKMapTypeStandard;//卫星地图

    //设定地图是否打开路况图层
    _mapView.trafficEnabled = YES;

    //底图poi标注
    _mapView.showMapPoi = NO;

    //在手机上当前可使用的级别为3-21级
    _mapView.zoomLevel = 10;

    //设定地图View能否支持旋转
    _mapView.rotateEnabled = YES;

    //设定地图View能否支持用户移动地图
    _mapView.scrollEnabled = YES;

    //添加到view上
    [self.view addSubview:_mapView];
}

/**
 *用户方向更新后,会调用此函数
 *@param userLocation 新的用户位置
 */
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
    [_mapView updateLocationData:userLocation];
    NSLog(@"heading is %@",userLocation.heading);
}

/**
 *用户位置更新后,会调用此函数
 *@param userLocation 新的用户位置
 */
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
    //    NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
    [_mapView updateLocationData:userLocation];
}

iOS - 百度地图SDK集成(地理定位)_第5张图片

你可能感兴趣的:(IOS开发)