【iOS】百度地图api使用总结

首先,需要到百度LBS开放平台注册开发者账号,这个步骤略。

iOS SDK自v2.0.2版本开始采用了全新的Key验证体系。在一个项目中使用百度地图SDK则必须申请对应的密钥.

应用名称要填自己的项目名称,应用类型按照需要选择,启用的服务可以全部勾选上,也可以根据需要勾选,安全码即工程的Bundle Identifier

点击提交,生成一个新的密钥。

这部分的AK就是你的工程专用的密钥,要写在AppDelegate中的。

第二部分 配置

这部分是参考百度提供的方法,按步骤来是没有错得。

配置.framework形式开发包

第一步、引入BaiduMapAPI.framework

百度地图SDK提供了模拟器和真机两种环境所使用的framework,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下,开发者可根据需要使用真机或模拟器的包,如果需同时使用真机和模拟器的包,可以使用lipo命令将设备和模拟器framwork包中的BaiduMapAPI文件合并成一个通用的文件,命令如下:lipo -create Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI Release-iphonesimulator/BaiduMapAPI.framework/BaiduMapAPI
-output Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI

此时Release-iphoneos文件夹下的BaiduMapAPI.framework即可同时用于真机和模拟器(可以使用lipo–info 命令检查framework所支持的架构)。

将所需的BaiduMapAPI.framework拷贝到工程所在文件夹下。在 TARGETS->Build Phases-> Link Binary With Libaries中点击“+”按钮,在弹出的窗口中点击“Add Other”按钮,选择BaiduMapAPI.framework文件添加到工程中。

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

第二步、引入所需的系统库

百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。添加方式:在Xcode的Project -> Active Target ->Build Phases ->Link Binary
With Libraries,添加这几个framework即可。

第三步、环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。

第四步、引入mapapi.bundle资源文件

如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示

mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。

方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

第五步、引入头文件

在使用SDK的类引入头文件:

#import <BaiduMapAPI/BMapKit.h>//引入所有的头文件
 
#import <BaiduMapAPI/BMKMapView.h>//只引入所需的单个头文件

还要注意的是三点

1.在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC

2.Info.Plist

这里是需要自己手动添加的,不然iOS8以上运行会报错,或者定位失败

如果模拟器不能定位,更改模拟器的位置为None,Debug-->location-->None

还有一点,工程内必须至少有一个.mm文件,不然会报错。

按照百度的说法:

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

但是个人习惯是改一下文件名,不然Objective-C++和Objective-C转来转去应该也是够麻烦的。

代码问题:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions;

在这个方法中调用下面的方法。

//如果要使用百度地图,先启动BaiduMapManager
    mapManager = [[BMKMapManager alloc] init];

    //如果需要关注网络及授权验证事件,要设定generalDelegate参数为self
    //如果不需要关注网络及授权验证事件,要设定generalDelegate参数为nil
    BOOL ret = [mapManager start:@"XFoaOAGajwxsk0AHn0adCOBn" generalDelegate:self];
    if (!ret) {
        NSLog(@"manager start failed");
    }
//iOS8开始定位
- (BOOL)beginLocationUpdate
{
    // 判断定位操作是否被允许
    if([CLLocationManager locationServicesEnabled])
    {
        locationManager = [[CLLocationManager alloc] init];//注意,这里的locationManager不是局部变量
        //兼容iOS8定位
        SEL requestSelector = NSSelectorFromString(@"requestWhenInUseAuthorization");
        if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined &&
            [locationManager respondsToSelector:requestSelector]) {
            [locationManager requestWhenInUseAuthorization];
        }
        return YES;
    }else {
        //提示用户无法进行定位操作

    }
    return NO;
}
#pragma mark - 对网络状态监听的处理
- (void)onGetNetworkState:(int)iError{
    if (0 == iError) {
        NSLog(@"联网成功");
    }
    else{
        NSLog(@"onGetNetworkState %d",iError);
    }
}

#pragma mark - key授权认证状态监听
- (void)onGetPermissionState:(int)iError{
    if (0 == iError) {
        NSLog(@"授权成功");
    }
    else {
        NSLog(@"onGetPermissionState %d",iError);
    }
}

ViewController中的就先不写了。这个可以参考百度地图官方Demo的LocationDemoViewController,基本是一样的,没问题。

时间: 2024-10-10 04:28:38

【iOS】百度地图api使用总结的相关文章

ios 百度地图api 入门

百度地图api 官方教程: http://developer.baidu.com/map/index.php?title=iossdk 这个非常好, 很适合新手 CLLocationCoordinate 经纬度 BMKMapManager 地图驱动 BMKMapView 地图viewBMKPointAnotation 地图提示 BMKLocationService 定位服务

IOS百度地图API

1.打开网站http://developer.baidu.com/map/  注册百度开发者账号 然后登陆 2.首页 IOS开发 包含(定位功能 基础地图  导航功能 检索功能 LBS云检索 计算工具 全景功能) 点击定位功能 进入http://developer.baidu.com/map/index.php?title=iossdk/guide/location 3.阅读文档 一步步集成即可,遇到问题百度或者找技术客服

iOS百度地图笔记(环境安装)

最近有项目要使用到地图功能,先做一下调研.百度的ios开发环境需要具备两点,一 秘钥 二 SDK.在百度上搜索“ios百度地图api”,然后打开网页“百度地图API-首页”.在此官网上可以获取所有需要的条件. 一 获取秘钥 在官网上点击“申请秘钥” 点击创建应用 这里需要注意几点: 1 应用类型选择 iOS SDK:2 安全码是使用百度地图SDK的APP的bundle ID. 点击提交,这样在你账号下的应用列表中就能看到百度给你分配的秘钥了.访问应用(AK)字段即为秘钥. 二 获取SDK并且配置

iOS 百度地图报私有api的解决方案

1.Build Settings-->搜索other linker Flags-->将other linker Flags设置为-objc 2.用2.1.1的版本的百度地图 3.换高德地图 iOS 百度地图报私有api的解决方案

iOS百度地图poi检索(基于百度地图2.3.0SDK开发)

正好做到百度地图的poi检索,拿来分享一下,基于百度地图2.3.0SDK开发,说实话,这个新版本poi真不好用 先来看头文件里面,定义poi对象,当然你也可以写到实现文件里面 #import <UIKit/UIKit.h> #import "BMapKit.h" @interface NearByPlaceViewController : ViewControllerBase <BMKPoiSearchDelegate> {     BMKPoiSearch *

乐卡上海网点地图制作心得 | 百度地图API使用心得

前言 事情的起因是我的爱人喜欢收集一些美丽的乐卡(明信片的一种,正面是美丽壮阔的风景照).作为一个坚实的后盾自然要支持她!于是我经常借着午休穿梭在大街小巷,凭借乐卡官方提供的乐卡网点地址进行寻找并取卡.在搜寻过程中,萌生了制作一张基于那些地址的专门戳点地图的想法.期间也看到蚂蚁家制作的北京乐卡地图使用的是百度地图API,但是该网页仅能运行于PC端,手机打开巨卡.刚好我的github博客站最近配置完成了,准备自己也写一个. 材料单 百度开放平台账号一个 百度开放平台浏览器端启用了Javascrip

iOS 百度地图获取地理位置名称

目前很多的应用都用到了百度地图这一版本,不过有些方法是我在网上并没有找到的,但是这并不意味着就没有相关的文章介绍,那么这里我所记录的就是百度地图获取地理位置,以及省份,城市,区域,其他的不多说了,直接进入正题吧:       创建地图基本图层 首先,需要到http://dev.baidu.com/wiki/imap/index.php?title=iOS平台/相关下载下载全部内容,包括文档,示例代码和开发包. 然后获取自己的API KEY,具体方法按百度的官网申请就行,比较简单. 下载的文件应该

【百度地图API】如何利用PhoneGap制作地图APP

原文:[百度地图API]如何利用PhoneGap制作地图APP 摘要:百度地图API是一套由javascript编写的地图程序接口,按说它应该运行在浏览器上.现在,只要利用PhoneGap,我们就能开发出移动平台上能使用的APP了! --------------------------------------------- 一.安装平台 PhoneGap支持5种平台,IOS,安卓,黑莓,WebOS,塞班. 我们下面以IOS为例,开发一个定位的APP. 1.下载xCode 注意看清楚,狮子系统和雪

百度地图API(一)

对于个人来说,在编写程序时,可能需要用到一些数据,这些数据是我们一般难以直接采集的.所以,学会使用大公司和国家的数据和API接口是相当重要的. 最近,我在写一个个人管理工具,需要用到本地实时天气数据. 这个可以考虑做一个多功能数据采集器,采集户外户内数据,再结合气象模型,预测模型.不过这些都比较高端了,我还完成不了. 简单一点,找一个企业级的天气API,就可以查看本地的天气,除此之外,还可以查看其它地方,及预测之后一段时间的天气. 通过网上搜索,百度地图的API使用非常广泛.相应的使用方法和资料

百度地图api的介绍和使用

1. 什么是百度地图api? 百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,我们想使用百度地图的一些内部程序能够为我们提供很大的便利,他里面包括javascriptAPI,Web服务API.Android SDK.iOS SDK.定位SDK.车联网API.LBS云等多种开发工具与服务,提供基本地图展现.搜索.定位.逆/地理编码.路线规划.LBS云存储与检索等功能,适用于PC端.移动端.服务器等多种设备,多种操作系统下的地图应用开发.百度地图JavaScript API是一套由