01 如何将百度地图加入IOS应用程序?
2012-11-20 22:53
330 查看
O 需求
将百度地图加入到IOS应用程序中
一 准备
1)到百度官网下载 iOS SDKv1.2.2 静态库。地址如下 http://openapi.baidu.com/map/sdkiosdev-download.htm
2)将静态库引入你的工程,具体步骤如下:
3)引入CoreLocation.framework和QuartzCore.framework
4)为Other Linker Flags 设置-all_load属性
步骤:选中你的工程。选择右边的TARGETS->Build Settings找到Other Linker Flags
二 编码
1、在ViewController.h中添加如下代码
在ViewController.mm中添加如下代码 (注:我的工程是将ViewController.m的后缀改为了.mm)
执行后,效果如下:
三 下载 ........去下载源代码咯........
四 调试
当编译不成功时,可检查如下问题
1、 是否已在项目中引入 CoreLocation.framework Quartz.framework MapKit.framework
2、 是否已将任意一个.m文件改为.mm(仅该后缀即可,不涉及其它地方)
3、 是否已为Other Linker Flags 添加-all_load属性如下图所示:
4、 检查引入的静态库类型是模拟器的还是IOS设备的,是否与当前的编译模式相同。
五 思路
六 分析
百度地图目前还在改进和更新中,大家不必太迷信它。如果在使用过程中遇到各种怪异的问题,建议先到百度地图api吧中确认以下是不是百度地图自身的Bug.
七 疑问
将百度地图加入到IOS应用程序中
一 准备
1)到百度官网下载 iOS SDKv1.2.2 静态库。地址如下 http://openapi.baidu.com/map/sdkiosdev-download.htm
2)将静态库引入你的工程,具体步骤如下:
引入静态库文件 百度MapAPI提供了模拟器和真机两中环境所使用的静态库文件,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下。有两种方式可以引入静态库文件: 第一种方式:直接将对应平台的.a文件拖拽至XCode工程左侧的Groups&Files中,缺点是每次在真机和模拟器编译时都需要重新添加.a文件; 第二种方式:使用lipo命令将设备和模拟器的.a合并成一个通用的.a文件,将合并后的通用.a文件拖拽至工程中即可,具体命令如下: lipo –create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a –output libbaidumapapi.a 第三种方式: 1.将API的libs文件夹拷贝到您的Application工程跟目录下 2.在XCode的Project -> Edit Active Target -> Build -> Linking -> Other Linker Flags中添加-lbaidumapapi 3.设置静态库的链接路径,在XCode的Project -> Edit Active Target -> Build -> Search Path -> Library Search Paths中添加您的静态库目录,比如"$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME)",$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator 注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将XCode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++" 引入mapapi.bundle资源文件 该步骤为可选,mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片。如果您不需要使用内置的图片显示功能,则可以不添加此bundle文件。您也可以根据具体需求任意替换或删除该bundle中的图片文件。 添加方式:将mapapi.bundle拷贝到您的工程目录,直接将该bundle文件托拽至XCode工程左侧的Groups&Files中即可。 引自:http://openapi.baidu.com/map/sdkiosdev-2.htm |
4)为Other Linker Flags 设置-all_load属性
步骤:选中你的工程。选择右边的TARGETS->Build Settings找到Other Linker Flags
二 编码
1、在ViewController.h中添加如下代码
#import <UIKit/UIKit.h> #import "BMapKit.h" @interface ViewController : UIViewController<BMKGeneralDelegate> { BMKMapManager *_mapManager; } @end
在ViewController.mm中添加如下代码 (注:我的工程是将ViewController.m的后缀改为了.mm)
- (void)viewDidLoad { [superviewDidLoad]; // Do any additional setup after loadingthe view, typically from a nib. //启动BMKMapManager (加载百度地图前,必须先启动BMKMapManager) _mapManager = [[BMKMapManageralloc]init]; BOOL ret = [_mapManagerstart:@"2772BD5CAFF652491F65707D6D5E9ABEBF3639CC"generalDelegate:self]; if (!ret) { NSLog(@"manager start failed!"); } //创建一张百度地图 BMKMapView* mapView = [[BMKMapViewalloc]initWithFrame:CGRectMake(0,0, 320,480)]; [self.viewaddSubview:mapView]; }
执行后,效果如下:
三 下载 ........去下载源代码咯........
四 调试
当编译不成功时,可检查如下问题
1、 是否已在项目中引入 CoreLocation.framework Quartz.framework MapKit.framework
2、 是否已将任意一个.m文件改为.mm(仅该后缀即可,不涉及其它地方)
3、 是否已为Other Linker Flags 添加-all_load属性如下图所示:
4、 检查引入的静态库类型是模拟器的还是IOS设备的,是否与当前的编译模式相同。
五 思路
六 分析
百度地图目前还在改进和更新中,大家不必太迷信它。如果在使用过程中遇到各种怪异的问题,建议先到百度地图api吧中确认以下是不是百度地图自身的Bug.
七 疑问
相关文章推荐
- 01 如何将百度地图加入IOS应用程序?
- 如何应用autosizing属性使iOS应用程序界面适配iPhone5
- iOS WebView 如何通过js获取网页中所有图片并加入点击事件,实现浏览图片的功能
- 如何减小iOS应用程序的大小
- IOS 如何调用其他应用程序打开我下载好了的 EXCEL WORD PDF 等
- 【转】如何开发苹果iOS操作平台下的应用程序?
- iOS开发入门_应用程序的执行顺序_UI_01
- iOS 7 开发如何使用百度地图
- 如何应用autosizing属性使iOS应用程序界面适配iPhone5
- C# 如何为应用程序加入多个图标?
- 如何应用autosizing属性使iOS应用程序界面适配iPhone5
- 百度地图IOS平台开发-如何一对一对应大头钉和泡泡
- UI基础-01第一个iOS应用程序
- iOS中如何将token加入到afnetworking中请求当中
- ios开发应用程序,如何限制只能竖屏展示,旋转横屏后界面无变化
- 如何给基于对话框的应用程序加入一个工具栏?
- 如何应用autosizing属性使iOS应用程序界面适配iPhone5
- iOS 如何在一个应用程序中调用另一个应用程序
- 不依赖Parse或Firebase,如何开始为你的iOS应用程序创建后端
- 如何发布IOS应用程序到苹果APP STORE