ios添加百度地图方法

Hello BaiduMapiOS SDK

引入头文件

首先将百度MapAPI提供的头文件和静态库(.a)文件拷贝到您的工程目录下,在Xcode中添加新的文件Group,引入百度MapAPI提供的头文件(请使用Xcode 4.X以上平台)。

在您需要使用百度MapAPI的文件中添加以下代码

#import "BMapKit.h"

引入静态库文件

百度地图SDK提供了模拟器和真机两中环境所使用的静态库文件,分别存放在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中添加-ObjC

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++"

引入系统framework

百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。 添加方式:右键点击Xcode工程左侧的Frameworks文件夹,add->Existing Frameworks,在弹出窗口中选中这几个framework,点击add即可。

引入mapapi.bundle资源文件

mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。 添加方式:将mapapi.bundle拷贝到您的工程目录,直接将该bundle文件托拽至Xcode工程左侧的Groups&Files中即可。若您需要替换定位、指南针的图标,请保留原文件名称,否则不显示替换的新图片,默认大头针标注与路线关键点的新图片名称可自定义名称。

SDK资源文件里存放的有:

初始化BMKMapManager

在您的AppDelegate.h文件中添加BMKMapManager的定义

@interface BaiduMapApiDemoAppDelegate : NSObject <UIApplicationDelegate> {
       UIWindow *window;
       UINavigationController *navigationController;
       BMKMapManager* _mapManager;
}

在您的AppDelegate.m文件中添加对BMKMapManager的初始化,并填入您申请的授权Key,示例如下

- (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;
}

创建BMKMapView

在您的ViewController.m文件中添加BMKMapView的创建代码,示例如下

- (void)viewDidLoad {
    [super viewDidLoad];
    BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
    self.view = mapView;
}

自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期,并且在一个时刻只能有一个BMKMapView接受回调消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中调用BMKMapView的对应的方法,并处理delegate,代码如下:

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

编译,运行,效果如下图所示:

百度地图支持多点触摸、双击放大、多点单击缩小、旋转等手势操作,此外自2.2.0版本起,支持相应的控制接口来开启/关闭这些手势操作。

注:百度地图iOS SDK自v2.2.0起,全面实现地图多实例,即开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰。具体使用方法请参考MultiMapViewDemo的介绍。

时间: 2024-10-14 00:37:37

ios添加百度地图方法的相关文章

iOS集成百度地图方法步骤

前言:app中的导航功能越来越流行,现在我自己做的项目中也有此需求,做过了后记录下笔记.  由于源代码保密所以这里仅仅提供demo,下面是效果图 一:iOS地图SDK 1.打开 百度地图api链接 iOS地图SDK 2.注册成为开发者并按照步骤走 3.遇到的问题解决 4.遇到这种错误 2016-03-22 17:11:09.745 baiduMap[6664:276199] 地图所需资源文件不完整,请根据开发指南正确添加mapapi.bundle文件 成功: 4.注意BMKMapView 的类型

Xcode4.6下添加百度地图ios版(BMapKit)详细教程(_BMKMapManager错误解决)

本文旨在帮助新手快速搭建ios版百度地图,官网有相关教程,可是太旧了,现在的xcode都更新到了4.6,他的教程应该是在4.3之前吧.估计新手在搭建的时候一定会遇到错误,按照我的教程一步一步,保证你花最少的时间,快速进行地图开发. 老鸟莫笑,我也是个新手,只是记录一下心路历程,如有错误,敬请指教. 机器环境:mac os x 10.8.2 开发环境:xcode4.6 真机环境:iPod Touch4G  版本:6.1.2 地图版本:BaiduMapApi_Lib_iOS_1.2.2    下载地

IOS SDK百度地图不能正常显示,只显示网格

在使用百度地图开发的时候出现的问题,问题为: IOS SDK百度地图不能正常显示,只显示网格 如图所示 在这里出现的问题纠结了很久,最后发现在API控制台创建应用的时候需要输入安全码 之后知道此安全码即为工程中的Bundle Identifier 所以我们填写的时候需要将工程中的info.plist文件设置Bundle Identifier和安全码一样即可 此外还有部分需要注意的地方 注意: 1. 为了给用户提供更优质的服务,iOS SDK自v2.0.2版本开始采用了全新的Key验证体系.因此,

iOS开发百度地图常见问题及解决办法

1.64bit模拟器不能正常工作 解决:请将Xcode5 的 Project -> Edit Active Target -> Build Settings -> Linking -> Other Linker Flags 中的"-ObjC"修改为"-all_load" 2.程序死在 _mapView = [[BMKMapView alloc] init]; 解决:很可能是由于没有在appDelegate里面初始化_mapManager 3.

如何在手机网站上添加百度地图(带搜索功能)

在手机网站上添加百度地图,直接用百度API里的代码就可以, http://developer.baidu.com/map/ 就可以生成地图 输入地址等一些信息,但是如何添加地址搜索 这样的地址搜索如何添加 而且添加后会出现冲突 小尖角好像是固定定位, 还没搞出来~~~

iOS关于百度地图坐标偏移的处理

定义一个宏来转换 #define CBCoorConvert(coor) BMKCoorDictionaryDecode(BMKBaiduCoorForGcj(coor)) 使用 - (id)initWithJson:(NSDictionary *)json { if (self = [super initWithJson:json]) { self.mileageNew = [json objectForKey:@"newMileage"]; CLLocationCoordinate

如何在网页中添加百度地图

现在大多数网站都会在联系地址页面插入地图,鉴于目前谷歌网址不能打开的原因,因此百度地图应该成为网站开发者的首选. 楼主因为要搞这个小东西,所以顺便发一篇博客分享,其实网上资料很多,楼主也是参考了网上达人资料,主要目的是为了方便以后自己查看啦! 首先,打开百度地图生成器网址:http://dev.baidu.com/wiki/static/map/API/tool/creatMap/ 点击地图快速生成器,进入选择编辑页面,这里有三步: 第一步是定位中心点,意思就是选择你想要设置的大体位置. 第二步

iOS 使用百度地图,仿滴滴打车的定位方法。拖动时时定位

这里的思路: (1)把图片放到屏幕的中间,这样在拖动的时候就不会跟随着地图移动了. (2)百度地图提供了,View坐标和地理坐标转换的方法.正式这个方法的存在,方便我们及时的获取拖动后的,屏幕中间的图片所在位置的经纬度. 当拖动地图的时候,定位的图片一直在屏幕的中央,当拖动停止的时候会显示出具体的信息 #import "HouseTypeMapVC.h" @interface HouseTypeMapVC ()<BMKMapViewDelegate,BMKLocationServ

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

首先,需要到百度LBS开放平台注册开发者账号,这个步骤略. iOS SDK自v2.0.2版本开始采用了全新的Key验证体系.在一个项目中使用百度地图SDK则必须申请对应的密钥. 应用名称要填自己的项目名称,应用类型按照需要选择,启用的服务可以全部勾选上,也可以根据需要勾选,安全码即工程的Bundle Identifier 点击提交,生成一个新的密钥. 这部分的AK就是你的工程专用的密钥,要写在AppDelegate中的. 第二部分 配置 这部分是参考百度提供的方法,按步骤来是没有错得. 配置.f