• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 百度地图开发的学习(二)——地图定位,百度地图

百度地图开发的学习(二)——地图定位,百度地图

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了百度地图开发的学习(二)——地图定位,百度地图等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

百度地图开发的学习(二)——地图定位,百度地图


定位是地图开发的必经重要的环节,我也在不断学习中,就自己了解写一下这些。

一、配置

1.百度的定位是有自己jar包和so文件的,所以记得将它们配置到对应的文件夹中并加载进工程里。具加载方法在学习一里面就有了,这里就不细讲了。

2.在百度的配置方法中导入完库文件后,还要进行声明libs源文件

如果是将jar包和so文件全部放入libs文件中,就需要这样的声明了,本人也试过,但是格式有点偏差,build.gradle会报错,改成下面这样就可以了。

sourceSets {
main {
jniLibs.srcDir 'libs'
}

3.添加service

location的服务是作为service来开启的,需要添加进AndroidMainfest.xml。

<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>


4.添加权限
之前学习一中已经把后续的所需权限包含进来,所以可以参考之前的,这里就不附上了。

 

二、熟悉主要的使用的定位的类

1.LocationClient

这是一个定位服务的类,相当于定义一个有定位服务的客户端,而且只能在主线程中启动

它的有两个构造函数,都需要传入全局的context,建议用getApplicationContext传入

这两个构造函数区别:是否在创建过程中之前是否定义了配置定位参数的locationClientOption。如果采用第一个构造方法,那么在后面也需要使用setLocOption来补充。

常用方法如下:

void setLocOption(LocationClientOption locOption) 设置 LocationClientOption
void start() 启动定位sdk
void stop() 停止定位sdk
void registerLocationListener(BDLocationListener listener) 注册定位监听函数
void registerNotify(BDNotifyListener mNotify) 注册位置提醒监听
void requestNotifyLocation() NA
void removeNotifyEvent(BDNotifyListener mNotify) 取消注册的位置提醒监听
int requestOfflineLocation() 离线定位请求,异步返回,结果在locationListener中获取.

一般在构造完和设置参数后吗,就可以调用start方法,启动定位服务。

2.LocationClientOption

能够配置定位SDK各种参数

常用的方法:

void setCoorType(java.lang.String coorType) 获得当前设置的坐标类型
void SetIgnoreCacheException(boolean cacheException) 设置是否进行异常捕捉 true:不捕捉异常;false:捕捉异常,默认为false
void setIgnoreKillProcess(boolean killProcess) 设置是否退出定位进程 true:不退出进程; false:退出进程,默认为true
void setIsNeedAddress(boolean isNeed) 设置是否需要地址信息,默认为无地址
void setIsNeedLocationPoiList(boolean isNeedLocationPoiList) 设置是否需要返回位置POI信息,可以在BDLocation.getPoiList()中得到数据
void setLocationMode(LocationClientOption.LocationMode mode) 设置定位模式
void setNeedDeviceDirect(boolean isNeedDeviceDirect) 在网络定位时,是否需要设备方向 true:需要 ; false:不需要。
void setOpenGps(boolean openGps) 设置是否打开gps进行定位
void setProdName(java.lang.String prodName) 设置Prod字段值
void setScanSpan(int scanSpan) 设置扫描间隔,单位是毫秒 当<1000(1s)时,定时定位无效

常用的设置有定位模式、定位坐标系、扫描时间间隔、返回地址结果、是否打开GPS、定位模式。

定位模式(默认高精度):

(1)高精度定位模式(Hight_Accuracy):同时使用网络定位和GPS定位,优先返回最高精度的定位结果。

(2) 低功耗定位模式(Battery_Saving):不使用GPS,只使用网络定位(WiFi和基站)。

(3)仅用设备定位模式(Device_Sensors): 不适用网络定位,只使用GPS进行定位。但是此模式下不支持室内环境的定位。

定位坐标系(建议采用bd09ll,百度地图用自己坐标比较准。。。):

(1)返回国测局经纬度坐标系:gcj02

(2)返回百度墨卡托坐标系 :bd09

(3)返回百度经纬度坐标系 :bd09ll

关于坐标系的一些了解我也会在下一篇blog里面说到。。。

扫描时间间隔(单位:ms):设置扫描间隔,单位是毫秒 当<1000(1s)时,定时定位无效

返回定位结果:设置是否需要地址信息,默认无地址

是否打开GPS:定位一般都需要开启

3. BDLocationListener 定位请求回调接口

在设置完定位参数过后,需要设置监听事件,主要是重写onReceiveLocation(BDLocation location)函数,实现对于location结果的处理。

4.BDLocation 内部封装了经纬度、半径等属性。

常用的方法:

java.lang.String getAddrStr() 获取详细地址信息
double getAltitude() 获取高度信息,目前只有是GPS定位结果时才有效,单位米(还没有实现)
java.lang.String getCity() 获取城市
java.lang.String getCountry() 获取国家
double getLatitude() 获取纬度坐标
double getLongitude() 获取经度坐标
java.lang.String getProvince() 获取省份
float getSpeed() 获取速度,仅gps定位结果时有速度信息,单位公里/小时,默认值0.0f
java.lang.String getStreet() 获取街道信息
java.lang.String getTime() server返回的当前定位时间
float getRadius() 获取定位精度,默认值0.0f
float getDirection() gps定位结果时,行进的方向,单位度

常获取的信息:经纬度、精度范围、行进的方向

5.MyLocationData 定位数据包

之前的类完成地图的定位和监听响应,如果要在地图中显示出来,就需要构造定位数据包,来显示当前定位位置。

MyLocationData.Builder accuracy(float accuracy) 设置
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 百度地图开发的学习(二)——地图定位,百度地图

相关文章

  • 2017-05-223.6 响应系统设置的事件(Configuration类)
  • 2017-05-26Android中接收系统广播消息
  • 2017-05-26【Android】由浅到深理解AIDL
  • 2017-05-26Android--数据库数据显示至屏幕
  • 2017-05-26App内切换语言,app切换语言
  • 2017-05-26android开发,权限获取,android开发权限
  • 2017-05-26Android开发学习之路--Annotation注解简化view控件之初体验
  • 2017-05-26Android中开发工具Android Studio修改created用户(windows环境),androidcreated
  • 2017-05-26Andriod DiskLruCache的使用案例
  • 2017-05-26《Android Studio实用指南》12.18 文本搜索工具

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信支付,信支付
    • android全磁盘加密
    • Android—Service与Activity的交互,androidactivity
    • android:eclipse看着很舒服的字体和启动速度很快android模拟器
    • Android studio 百度地图开发(1)配置工程、显示地图
    • Android横竖屏切换小结,Android屏切换小结
    • Java反射在Android中的使用,java反射android
    • andriod 动态显示当前时间,andriod当前时间
    • Android中使用ImageViewSwitcher实现图片切换轮播导航效果,
    • Android SDK 镜像,androidsdk镜像

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有