百度地图使用笔记

创建地图
  1. 创建开发者账号
  2. 创建应用 申请秘钥
  3. 在工程中将ViewController.mm 因为SDK有一部分是以C++写的

静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++"

ViewController
  1. 修改plis文件
    在plist文件中添加
    • NSLocationAlwaysUsageDescription
    • NSLocationWhenInUseUsageDescription
    • BaiduNew
plist
  1. 配置环境

导入百度提供的.framework包

添加包

引入所需的系统库
百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和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)。
(注:加粗标识的系统库为v2.9.0新增的系统库,使用v2.9.0及以上版本的地图SDK,务必增加导入这3个系统库。)

最后

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。
** 注意大小写**


-ObjC
  1. 引入mapapi.bundle资源文件
    方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI_Map.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。
屏幕快照 2015-12-08 09.58.39.png
屏幕快照 2015-12-08 09.58.45.png
屏幕快照 2015-12-08 09.58.49.png
  1. 添加头文件

import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件
import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件

AppDelegate

添加属性
@property (nonatomic, strong)BMKMapManager *manager;
签协议
<BMKGeneralDelegate>
初始化

- (BOOL)application:(UIApplication *)application   
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {       // 要使用百度地图,请先启动BaiduMapManager  
    _mapManager = [[BMKMapManager alloc]init];   
// 如果要关注网络及授权验证事件,请设定     generalDelegate参数  
    BOOL ret = [_mapManager start:@"在此处输入您的授权Key"  generalDelegate:nil];  
    if (!ret) {  
        NSLog(@"manager start failed!");  
    }  
// Add the navigation controller's view to the window and display.  
    [self.window addSubview:navigationController.view];  
    [self.window makeKeyAndVisible];  
   return YES;  
}

实现协议方法

/**
 *  获取网络状态
 */
-(void)onGetNetworkState:(int)iError {

    if (iError == 0) {
        NSLog(@"联网成功");
    } else {
        NSLog(@"联网失败");
    }

}
/**
 *  获取授权状态
 */
-(void)onGetPermissionState:(int)iError {

    if (iError == 0) {
        NSLog(@"获取授权成功");
    } else {
        NSLog(@"获取授权失败");
    }

}
  • 进入后台 进入前台
- (void)applicationWillResignActive:(UIApplication *)application {

    [BMKMapView willBackGround];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {

    [BMKMapView didForeGround];
}
  • 在storyBoard 添加NavigationController


    屏幕快照 2015-12-08 10.13.02.png

添加一个View

屏幕快照 2015-12-08 10.15.06.png

使其继承于BMKMaoView

屏幕快照 2015-12-08 10.15.42.png

这时候运行一下


屏幕快照 2015-12-08 10.17.04.png
添加功能
  • 在之前的view上添加Button 让其显示在View上
  • 引入头文件 拖拽view添加属性
#import "ViewController.h"
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件
#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件
@interface ViewController ()
@property (weak, nonatomic) IBOutlet BMKMapView *mapView;

@end
  • 签代理 <BMKMapViewDelegate>
-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.mapView.delegate = self;
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    self.mapView.delegate = nil;

}
  • view 上再添加一个View 黑色 Alpha0.6

  • 拖拽Button和灰色View添加属性


    如图
  • button 添加点击事件

- (IBAction)showSView:(id)sender {
    NSLog(@"SDFSDFAS");
    if (self.sView.alpha == 0) {
        [UIView animateWithDuration:0.2 animations:^{
            self.sView.alpha = 0.6;
        }];
    } else {
        [UIView animateWithDuration:0.2 animations:^{
            self.sView.alpha = 0;
        }];
    }

}
  • 添加label 和 switch
屏幕快照 2015-12-08 11.34.01.png
  • 卫星地图switch点击事件
- (IBAction)switchMapType:(id)sender {

    UISwitch *mySwitch = (UISwitch *)sender;

    [self.mapView setMapType:mySwitch.on == YES ? BMKMapTypeSatellite : BMKMapTypeStandard];

}
  • 添加实时路况同上:


    屏幕快照 2015-12-08 11.45.26.png

实时了路况点击事件:

- (IBAction)switchMapLoade:(id)sender {

    UISwitch *mySwitch = (UISwitch *)sender;

    self.mapView.trafficEnabled = mySwitch.on;

}
  • 添加热力图


    热力图
- (IBAction)showHeat:(id)sender {

    UISwitch *mySwitch = (UISwitch *)sender;

    self.mapView.baiduHeatMapEnabled = mySwitch.on;

}
  • 添加四个Button 分别拖拽为属性 如图


    添加Button

    在viewDidLoad里隐藏上面三个Button

  self.followButton.alpha = 0;
    self.headButton.alpha = 0;
    self.endButton.alpha = 0;
  • 给开始定位按钮添加点击事件 使上面三个Button出现开始定位按钮隐藏
- (IBAction)startLocation:(id)sender {


        [UIView animateWithDuration:0.3 animations:^{
            self.startButton.alpha = 0;
            self.followButton.alpha = 1;
            self.headButton.alpha = 1;
            self.endButton.alpha = 1;
            self.sView.alpha = 0;
        }];

}
  • 引入定位功能的头文件
    #import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件
  • 添加属性
    @property (nonatomic, strong) BMKLocationService *locationService;
    *签代理
    BMKLocationServiceDelegate
    *初始化
    self.locationService = [[BMKLocationService alloc] init];
  • 签代理
    self.locationService.delegate =self;
  • 在开始定位时启动本地定位 开始定位的点击事件里添加
    [self.locationService startUserLocationService]; [self.mapView showsUserLocation];
  • 在关闭定位的点击事件中关闭定位
    [self.locationService stopUserLocationService]; self.mapView.showsUserLocation = NO;
  • 添加代理方法
/**
 * 地图更新
 */
-(void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation {
    [self.mapView updateLocationData:userLocation];
}

未完待续.......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,273评论 25 707
  • 各位小伙伴们大家好,今天我向大家介绍一下苹果百度地图的使用方法,因为做过一些想关的APP,感觉百度地图还是挺方便的...
    Lee0528阅读 14,640评论 18 46
  • 1.申请密钥(key) http://lbsyun.baidu.com/apiconsole/key 第一步:打开...
    3ad997c871e9阅读 2,075评论 0 0
  • 最新百度地图使用注意事项(在使用中出现了引擎失败的家在错误,下边是注意事项) 第一步、引入BaiduMapAPI....
    寒桥阅读 2,935评论 3 5
  • 午间烈日炙乡村 白杨树下来了群乘凉人 知了屏息听农谚 鸟儿瞅着阿婆剥花生 张长李短寻常事 海侃争执请度娘 唠得最多...
    田园垄亩梅德萌阅读 298评论 3 3