iOS:百度地图学习1

 一、百度地图简介 

 

百度地图iOS SDK是一套基于armv7及armv7s处理器设备的应用程序接口,不仅提供构建地图的基本接口,还提供本地搜索、路线规划、定位等服务,自v2.0.0开始为矢量渲染的3D地图,并新增了矢量离线地图下载功能接口。

您可以使用百度地图iOS SDK开发适用于移动设备的地图应用,通过接口,您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序。百度地图iOS SDK提供的功能如下:

地图:提供地图展示和地图操作功能;

POI检索:支持周边检索、区域检索和城市内兴趣点检索;

地理编码:提供经纬度和地址信息相互转化的功能接口;

线路规划:支持公交、驾车、步行三种方式的线路规划;

覆盖物图层:支持在地图上添加覆盖物,展示更丰富的LBS信息;

定位:获取当前位置信息,并在地图上展示(支持普通、跟随、罗盘三种模式);

离线地图:使用离线地图可节省用户流量,提供更好的地图展示效果;

导航:支持调启百度地图客户端导航和调启Web页面导航(H5导航);

LBS云检索:支持查询存储在LBS云内的自有数据;

特色功能:短串分享(将POI搜索结果或反地理编码结果生成短串, 用户点击该链接可打开百度地图客户端查看相应信息);


用户在使用SDK之前需要获取百度地图移动版开发密钥(Key),该key与你的百度账户相关联。

您必须先有百度帐户,才能获得key。并且,该key与您引用SDK的程序包名有关,具体流程请参照申请密钥。请妥善保存Key,地图初始化时需要用到Key。

注意:

1. 为了给用户提供更优质的服务,iOS SDK自v2.0.2版本开始采用了全新的Key验证体系。因此,当您选择使用v2.0.2及之后版本的SDK时,需要到新的Key申请页面进行全新Key的申请;

2. 新、旧Key之间不可通用,即新Key只可以使用在v2.0.2及后续版本的SDK中,旧的Key只适用于v2.0.1及之前版本的SDK。旧的Key服务会长期保留,请用户放心使用。

申请密钥

百度地图iOS SDK开发密钥的申请地址为:http://lbsyun.baidu.com/apiconsole/key

申请步骤如下:

第一步:打开API控制台,如下图所示:

ioskey.png

第二步:点击创建应用,开始申请开发密钥,如下图:

sdkios2.jpg

第三步:填写应用名称、应用类型注意选择“for mobile”、正确填写安全码,点击确认,系统将会自动帮您生成相应的开发密钥,如下图所示:

sdkios3.jpg

第四步:上图中的“访问应用(ak)”就是您在开发过程中需要用到的开发密钥,请妥善保管。

注:密钥被删除后,对应程序中的SDK功能将不可用。误删的ak可以从回收站中找回。

安全码简介

在申请开发密钥的时候,需要填写对应工程的安全码。这里的安全码指的是该应用的Bundle Identifier,获取方式如下: Xcode切换到Summary标签查看Bundle Identifier

如下图示:

sdkios4.jpg

 

二、在项目中使用百度地图


1 打开xcode,新建一个demo工程(或是在你现有的工程下),创建好后把下载的的inc,libs,mapapi.bundle三个文件夹导入到工程内,注意需要copy+destination,看我如下截图:


一定要勾选copy和create group 同时要添加到target。


2 几乎所有的第三方地图sdk都是依赖于apple自有的几个framework,所以这一步需要我们导入:CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。 添加方式:右键点击Xcode工程左侧的Frameworks文件夹,add->Existing Frameworks,在弹出窗口中选中这几个framework,点击add即可。导入方法如下:


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
此时如果.h导入BMapKit.h头文件,实例化BMKMapManager或是BMapView,一定会有如下的错误:


貌似提示:libbaidumapapi.a找不到,那么是路径的问题么?这就是大家常遇到的BMKMapManager错误。其实原理是系统无法链接到我们的地图静态库,解决办法如下文:

选中工程,target,切换到Build Setting标签,定位到other link flag,
输入:-all_load



3 现在需要设置一下链接库的环境变量,好让项目能顺利找到目录下的.a文件,选中工程,target,切换到build setting标签,定位到Library search Path ,如下图所示:


删除已有的三个,添加一个足矣(模拟器+真机):$(SRCROOT)/libs/Release$(EFFECTIVE_PLATFORM_NAME)
简单解释一下:
$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator,



4 这个时候,静态库文件已经设置完毕,剩下的就只有代码工作了,由于需要key的验证,所以我们先需要使用BMKMapManager类,配置申请到的key,以得到授权。选中AppDelegate.h


#import <UIKit/UIKit.h>

@interface QQAppDelegate :UIResponder <UIApplicationDelegate>

@property (retain,nonatomic)BMKMapManager *mapMagger;

@end

在AppDelegate.mm中的didFinishLaunchingWithOptions,加入如下代码:


    //使用百度地图,先启动BMKMapManager

    _mapMagger = [[BMKMapManageralloc]init];

    // 如果要关注网络及授权验证事件,请设定generalDelegate参数

    BOOL ret = [_mapMaggerstart:@"请在此处输入key"generalDelegate:nil];

   if(!ret)

    {

        NSLog(@"manger starts failed@");

    }

7、在需要显示地图的类里导入BMKMapView.h后,实例化BMKMapView类。在viewDidLoad里添加代码:

//初始化地图

    self.mapView = [[BMKMapViewalloc]initWithFrame:CGRectMake(0,30,self.view.frame.size.width,400)];

    //地图显示比例尺,默认位置在地图左下方

    self.mapView.showMapScaleBar =YES;

    //设置地图类型

    self.mapView.mapType = BMKMapTypeStandard;

    [self.viewaddSubview:self.mapView]; 


5 在AppDelegate中授权过后,可以随意在任意的Viewcontroller中使用Mapview了。
(当然,BMKMapManager授权也可以写到任意的ViewController中,但是这样的话,只能在这个ViewController中使用MapView,换其它类使用地图的话,还需再来授权,否则地图view会是黑屏)。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值