如何使用百度地图实现当前定位

作为一个Android开发新人,这是我写的第一篇Android开发日志,如果有缺陷或者遗漏敬请谅解,如果有问题欢迎在讨论区提出。

首先,假设大家都已经能够导入地图并且能够运行,假如大家还不知道如何在android studio上创建百度地图可以参考这篇文章或直接看百度地图开发指南
https://blog.csdn.net/qq_34507714/article/details/78861043

接下去话不多说直接讲重点
在百度地图开发中我们一定会用到一个至关重要的定位抽象类那就是BDAbstractLocationListener。我浏览了百度地图的开发文档发现它有只有一个方法onReceiveLocation

也许大家看到此处会有疑问既然只有一个方法那它如何实现定位呢?别急,看到下面你就知道了。

之后我看到要传入一个类名为BDLocation的变量于是我就去百度地图开发文档查看了这个类
发现它有两个构造方法,这个大家看过知道就好
之后我发现这个类有如下方法:

在这些方法中有用的不多,主要是记住中文标出意思的那些记住就行。
但是我们却可以利用这个类打印位置的信息(比如详细地址信息、经纬度信息等)[注意:这个类虽然重要但在实现当前定位的案例中没有用到,在我之后的文章会再介绍]
之后我们再回到BDAbstractLocationListener 这个抽象类中,既然要使用它来定位我们就要实现它的子类(非抽象类)来创建实例并重写父类中的方法。

 public class MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {}}

接下去就是实现当前定位的代码

 private BaiduMap map;private BDAbstractLocationListener myLocationListener = new MyLocationListener();private boolean firstLoc = true;...@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//在使用SDK各组件之前初始化context信息,传入ApplicationContextSDKInitializer.initialize(this.getApplicationContext());//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。SDKInitializer.setCoordType(CoordType.BD09LL);setContentView(R.layout.activity_main);...map.setMyLocationEnabled(true); //开启定位locationClient = new LocationClient(this.getApplicationContext());  //声明locationClient类locationClient.registerLocationListener(myListener);locationClient.start();}...public class MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {                  //MyLocationData 是定位数据建造的类就把它想象成一个工具用于管理定位数据(可以设置它的精度、定位方向、经纬度等参数)MyLocationData locData;locData =  locData = new MyLocationData.Builder().accuracy(bdLocation.getRadius()).direction(100).latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build();//这里的map是BaiduMapmap.setMyLocationData(locData);//防止重复定位if(firstLoc){//设置定位标志并设置放大动画MapStatus.Builder builder = new MapStatus.Builder();builder.target(new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude())).zoom(18.0f);map.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));}}}

整个过程大概是这样:在地图开启定位后locationClient作为定位服务的客户端绑定监听类myListener之后获取当前定位信息(至于如何获取的我暂时还不知道,知道的小伙伴请在评论区中告知我)包装成BDLocation类后调用myListener.onReceiveLocation(BDLocation bdlocation) 方法,在该方法中先设置定位数据再设置定位标志和放大动画从而实现当前位置的定位。

-——————————————结束语————————————————
第一次写Android开发的文章如果有问题还请多多包涵

如何使用百度地图实现当前定位相关推荐

  1. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  2. android百度导航实现,Android 集成百度地图实现设备定位

    Android 集成百度地图实现设备定位 步骤1: 申请android 端SDK : http://lbsyun.baidu.com/ 步骤2: 下载基础版SDK 步骤3: 下载示例程序 步骤4: 开 ...

  3. Android百度地图之位置定位和附近查找代码简单实现 (上)

    很长时间没有做Android相关知识了,闲暇之余再弄了弄最新的百度地图API,主要是进行百度地图附近餐馆查找功能来练练手,同时熟悉下最新的API教程.文章比较基础,也希望对你有所帮助~参考前文:   ...

  4. 基于百度地图实现Android定位功能实现(详解+教程)

    基于百度地图实现Android定位功能实现(详解+教程) 1.初始化 (一)获取到SHA1 (1)找到View中的Tool Windows并打开Terminal (2)找到你的jdk的bin目录,小编 ...

  5. HTML5接入百度地图并搜索定位

    首先我们得去百度那里注册一下,拥有自己的Appkey,连接:http://lbsyun.baidu.com/ 也可以使用别人的,当然最好还是自己去注册比较好. 第二步,在你自己的网页中引入: 下面直接 ...

  6. 百度地图三种定位方式测试(高精度、低功耗、仅用设备)

    百度地图三种定位方式测试(高精度.低功耗.仅用设备) Android定位SDK自v7.0版本起,按照附加功能不同,向开发者提供了四种不同类型的定位开发包,可根据不同需求,自有选择所需类型的开发包使用. ...

  7. Android百度地图地理围栏定位间隔

    实现百度地图地理围栏定位间隔 继承GeoFenceClient,当定位成功的时候停止定位,间隔30秒再启动 public class MyGeoFenceClient extends GeoFence ...

  8. 百度地图官方的定位和方法

    这几天比较闲,闲来无事就把之前做过项目的东西整理一下,今天要写的是项目中引用百度地图第三方的定位这些,供大家快速的集成和使用.首先在百度地图http://lbsyun.baidu.com/sdk/do ...

  9. html5 geolocation 百度地图,html5 geolocation配合百度地图api实现定位

    1.了解html5 geolocation HTML5 Geolocation(地理定位)用于定位用户的位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的.=> 使用 ...

  10. [android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

           前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Intere ...

最新文章

  1. iOS之CAGradientLayer属性简介和使用
  2. JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation
  3. boost : has_to_string的用法测试程序
  4. iPhone 越狱开发相关
  5. 应该怎么做一个登录功能?
  6. Gateway网关-路由的过滤器配置
  7. 频域/s域/z域三大变换的发展史及其联系
  8. pythontkinter做计算器_Python Tkinter实现简易计算器功能
  9. linux 进程间通信-信号量(semagpore)
  10. Django 静态文件处理
  11. 哈佛大学凌晨4点半的景象
  12. 基于python的注册登录界面_基于python的Tkinter编写登陆注册界面
  13. Android 做服务器NanoHTTPD使用
  14. android系统查看wifi密码,安卓手机如何查看WIFI密码
  15. 201671010410 冯婷秀 实验十四 个人总结
  16. win7快捷方式去箭头_win7旗舰版桌面图标快捷方式箭头变成黑块怎么办?
  17. Ajax——AJAX实现省市联动
  18. C_sharp-gives-OJ-background-test-data
  19. 互联网广告付费模式专业术语大盘点:CPC、CPM、CPT……
  20. react 在JXL中嵌入JS表达式

热门文章

  1. python处理ts_python将ts转换成MP4
  2. 微型计算机求RAM片数,微机原理随堂练习答案及解析..doc
  3. CS代理+proxychains+nmap进行内网扫描
  4. 滤波器原理及其作用计算机网络,滤波器的原理与作用
  5. 使用Service Worker发送Push推送
  6. 计算机表格列宽怎么设置,excel自动调整列宽在哪?excel中怎么自动调整各行宽度...
  7. android支持的播放格式,android全格式多媒体播放器(一:ffmpeg移植)
  8. [Android Studio] 添加Override/Implement methods
  9. android gsm功能,Android手机-GSM网络与WCDMA网络选择的设置
  10. java+sql+用户登录失败,java.sql.SQLException:用户'sa'登录失败