百度地图SDK使用

百度地图其实和高德地图差不错,方法名也很像。php

1、注册开发者账号,下载百度SDKnode

注册开发者账号很简单ios

SDK下载地址:http://lbsyun.baidu.com/index.php?title=iossdk/sdkiosdev-downloadc++

 

2、配置环境sql

bundle identifierapi

得到AKxcode

2.1能够手动添加framework,也能够使CocoaPods,我是手动。ide

添加测试

CoreLocation.frameworkui

QuartzCore.framework

OpenGLES.framework

SystemConfiguration.framework

CoreGraphics.framework

Security.framework

libsqlite3.0.tbd(xcode7之前为 libsqlite3.0.dylib)

CoreTelephony.framework 

libstdc++.6.0.9.tbd(xcode7之前为libstdc++.6.0.9.dylib)

2.2在info.plist文件中添加

NSLocationAlwaysUsageDescription//不加有时定位会不成功

NSLocationWhenInUseUsageDescription//不加定位有时会不成功

App Transport Security Settings -- Allow Arbitrary Loads(YES);

Bundle display name 填写AK(APPKey)//会提示添加Bundle display name;

2.3千万记得在SDK里加上mapapi//会提示配置不完整,而且地图没法显示

#import "ViewController.h"
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#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>

#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<BMKMapViewDelegate,BMKLocationServiceDelegate>
{
    BMKMapManager *_mapManager;
    BMKMapView * _mapView;
    BMKLocationService * _loactionService;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self createMapManager];
    
    [self createMap];
    
    [self loaction];

}

//初始化地图
- (void)createMapManager
{
    _mapManager = [[BMKMapManager alloc]init];
    BOOL result = [_mapManager start:@"应用的APPKey" generalDelegate:nil];
    if (!result) {
        NSLog(@"manager 初始化失败");
    }else
    {
        NSLog(@"manager 初始化成功");
    }
    
}

//建立地图
- (void)createMap
{
    _mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
    [self.view addSubview:_mapView];
    _mapView.delegate = self;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//定位
- (void)loaction
{
    _loactionService = [[BMKLocationService alloc]init];
    _loactionService.delegate = self;
    
}

//处理方向改变信息
-(void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{

}

//处理坐标位置更新
-(void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
    NSLog(@"%f",userLocation.location.coordinate.latitude);
}
//卫星地图模式
- (IBAction)satelliteButton:(id)sender {
    
    [_mapView setMapType:BMKMapTypeSatellite];
}
@end

百度导航

添加

AudioToolbox.framework

ImageIO.framework

CoreMotion.framework

CoreLocation.framework

CoreTelephony.framework

MediaPlayer.framework

AVFoundation.framework

SystemConfiguration.framework

libstdc++6.0.9.dylib

Security.framework

JavaScriptCore.framework

build

配置

#import "AppDelegate.h"
#import "BNCoreServices.h"
- (void)createPlito
{
    NSString * baiduKey = [[LXJFrame readPlist:@"Confit" Type:@"plist"]objectForKey:@"baiduAppKey"][0];
    [BNCoreServices_Instance initServices:baiduKey];
    [BNCoreServices_Instance startServicesAsyn:nil fail:nil];

}
#import "PliotViewController.h"
#import "BaiduPliotHeader.h"

@interface PliotViewController ()<BNNaviRoutePlanDelegate,BNNaviUIManagerDelegate>
{

}
//导航类型 分为真实导航和模拟导航
@property (assign, nonatomic) BN_NaviType naviType;

@end

@implementation PliotViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self createPageSet];
    [self createPageSet];
    [self getCoordinate];
    
}

#pragma mark - create
- (void)createPliotSet
{
    _naviType = BN_NaviTypeReal;
}

- (void)createPageSet
{
    self.title = @"导航";
    self.view.backgroundColor = [UIColor whiteColor];
}

- (BOOL)checkServicesInited
{
    if(![BNCoreServices_Instance isServicesInited])
    {
        UIAlertController * alerCT = [UIAlertController alertControllerWithTitle:@"提示" message:@"引擎还没有初始化完成,请稍后再试" preferredStyle:UIAlertControllerStyleAlert];
        
        UIAlertAction * okAction = [UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            
        }];
        
        [alerCT addAction:okAction];
        return NO;
    }
    return YES;
}

- (void)getCoordinate
{
    NSMutableArray * nodesArray = [[NSMutableArray alloc]init];
    
    BNRoutePlanNode *startNode = [[BNRoutePlanNode alloc] init];
    startNode.pos = [[BNPosition alloc] init];
    startNode.pos.x = 113.948222;
    startNode.pos.y = 22.549555;
    startNode.pos.eType = BNCoordinate_BaiduMapSDK;
    [nodesArray addObject:startNode];
    
    BNRoutePlanNode *endNode = [[BNRoutePlanNode alloc] init];
    endNode.pos = [[BNPosition alloc] init];
    endNode.pos.x = 114.089863;
    endNode.pos.y = 22.546236;
    endNode.pos.eType = BNCoordinate_BaiduMapSDK;
    [nodesArray addObject:endNode];
    
    [BNCoreServices_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Highway naviNodes:nodesArray time:nil delegete:self userInfo:nil];

}

#pragma mark - BNNaviRoutePlanDelegate
//算路成功回调
-(void)routePlanDidFinished:(NSDictionary *)userInfo
{
    [LXJFrame showMessage:@"路径规划成功" showTime:1.5];
    //路径规划成功,开始导航
    [BNCoreServices_UI showNaviUI:_naviType delegete:self isNeedLandscape:YES];
}

//算路失败回调
- (void)routePlanDidFailedWithError:(NSError *)error andUserInfo:(NSDictionary *)userInfo
{
    [LXJFrame showMessage:@"路径规划失败" showTime:1.5];
    if ([error code] == BNRoutePlanError_LocationFailed) {
        NSLog(@"获取地理位置失败");
    }
    else if ([error code] == BNRoutePlanError_LocationServiceClosed)
    {
        NSLog(@"定位服务未开启");
    }
}

//算路取消回调
-(void)routePlanDidUserCanceled:(NSDictionary*)userInfo {
    [LXJFrame showMessage:@"路径规划取消" showTime:1.5];
}

#pragma mark - BNNaviUIManagerDelegate

//退出导航回调
-(void)onExitNaviUI:(NSDictionary*)extraInfo
{
    [LXJFrame showMessage:@"退出导航" showTime:1.5];
}

要用真机测试