欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android下如何使用百度地图sdk

程序员文章站 2023-01-01 23:04:46
可以使用该套 sdk开发适用于android系统移动设备的地图应用,通过调用地图sdk接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的lbs(地图类)应用程...

可以使用该套 sdk开发适用于android系统移动设备的地图应用,通过调用地图sdk接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的lbs(地图类)应用程序。

百度地图android sdk提供的所有服务是免费的,接口使用无次数限制。您需申请密钥(key)后,才可使用百度地图android sdk。任何非营利性产品请直接使用。这弦外之音就是盈利的产品必须帮百度给钱。

一、百度地图api平台。

百度地图api网址:http://developer.baidu.com/map/sdk-android.htm

百度地图开发步骤是

①获取密钥
②申请新密钥及查看原先申请的密钥
③开发指南 在安卓平台上使用百度地图的开发指南
④类参考 地图库所提供的类及方法说明相关下载
⑤开发所使用的相关包及说明示例下例

哝,这就是百度地图的apk平台的界面:

Android下如何使用百度地图sdk

首先,我们来申请key。

步骤也非常的简单:

①点击获取密钥 ②进入密钥申请页并阅读相关的使用条款 ③勾选 已阅读并同意条款 ④填写应用名称 填写一下应用的相应功能及描述 ⑤输入验证码确定后 ⑥密钥即可申请成功

我申请的key如下图所示:

Android下如何使用百度地图sdk

如何把申请下来的jar包导入到项目中了。

一、在工程里新建libs文件夹(若不存在的话),将开发包里的baidumapapi_v2_1_1.jar拷贝到libs根目录下,将libapp_baidumapapplib_v2_1_1.so和libvi_voslib.so 拷贝到libs\armeabi目录下。

二、项目属性中java build path->order and export中,确定android private libaries与android dependencies这两项前面的选择框被选上后,

三、点确定 菜单project->clean重新编译项目后就可以正常使用地图中的功能进行编程了。

四、上图包中的liblocksdk3.1.jar及对应的so文件是用于定位与搜索功能的,如果不需要可以不加入到项目当中

jar包的架构如下图所示:

Android下如何使用百度地图sdk

到入jar包的样子也如下图所示:

Android下如何使用百度地图sdk

在清单文件下,要添加一下的权限。

<supports-screens android:anydensity="true" android:largescreens="true" android:normalscreens="true"  android:resizeable="true" android:smallscreens="true" />

对需要加载地图的activity进行属性设置

<activity android:name="com.dfrz.map.dfrzmapactivity" android:configchanges="orientation|keyboardhidden|screensize" android:label="@string/app_name" android:screenorientation="sensor" > </activity>

这些准备工作做好以后,我们需要到入相应的map控件

<com.baidu.mapapi.map.mapview android:id="@+id/bmapsview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:clickable="true" />

上述xml的源代码就是这个就是加载百度地图的控件框,这个布局你可以根据自己的需要进行调整,或是放置到你的activity需要的地方去。此控件需要接收到点击事件,所以需要把clickable设置成true。

百度的地图的原理就是这样的。。。。。。。。。。。

地图、定位、搜索功能都需要用bmapmanager对象来管理, bmapmanager提供四个接口:init()、start()、stop()、destroy()。在应用程序里生成bmapmanager 对象并初始化,在程序退出时调用destroy(),在需要使用sdk功能的activity的oncreate()方法里调用start()方法,ondestroy()方法里调用stop()方法,或者onresume()/onpause()分别调用start()和stop()。 常用方法: destroy() : 在程序退出前调用  boolean init(java.lang.string strkey, mkgenerallistener  listener) 初始化地图引擎,需要送入申请的百度地图key boolean start() :开启百度地图api  boolean stop(): 终止百度地图api,调用此函数后,不会再发生回调。

mapview——百度地图的显示者。

一个显示地图的视图控件,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图 setbuiltinzoomcontrols(boolean on):设置是否启用内置的缩放控件 getcontroller():返回地图的mapcontroller,这个对象可用于控制和驱动平移和缩放 setdoubleclickzooming(boolean bdoubleclickzooming) : 设置mapview是否支持双击放大效果 getoverlays():获取当时地图控件中的已有图层 refresh(): 刷新此地图控件。

怎么用百度地图实现了定位了,这就需要locationclient

定位处理功能的核心类 registerlocationlistener(bdlocationlistener)接收到定位数据后可由指定监听器中的onreceivelocation(bdlocation)的方法来接收相关的数据并做相关的处理 构造: new locationclient(getapplicationcontext()) setlocoption(locationclientoption)设置定位的参数 start()启动定位功能,此功能是持续的,可以定义间隔刷新时间 stop()结束定位功能,但前面设置的定位参数不会消失,可以再启动 requestlocation() 发起异步定位请求,如果位置没有变化,不会发起网络请求,直接返回上次的位置。(2次间隔需要大于1秒)

locationclientoption  用于定位的操作的类。

设置定位功能的定位方式 disablecache(boolean) 真表示禁用缓存定位 setopengps(boolean) 是否使用gps定位,前提是手机打开了gps定位 setaddrtype(string) 当字串为"all"时返回此位置地址信息,其它不返回 setcoortype(string) 设置返回坐标的格式 gcj02 - 国测局 bd09百度墨卡托 bd0911百度经纬坐标(手机默认) setscanspan(int) 定时定位的时间间隔(ms) 此值大于1000时,每隔此值指定的时间就会发起一次定位 此值小于1000时或不设置此值时,调用一次requestlocation()方法则定位一次

这是我们需要定义mainactivity的类。相应源代码如图所示:

protected void ondestroy() { mapview.destroy(); if (mapmanager != null) { mapmanager.destroy(); mapmanager = null; } super.ondestroy(); }

有了这些准备以后,相应运行的效果如下:

Android下如何使用百度地图sdk

这就是android下百度地图应用的大概步骤。