地图实时定位我的位置
首先需要显示地图,请看我的另一篇文章
Android 使用百度地图API来显示地图
然后实时获取定位信息中的经度和纬度,
Android 获取LocationProvider以及获取定位信息
然后启动定位功能标记我的位置
- 开启定位图层 setMyLocationEnabled(true)
- 构造定位数据 MyLocationData对象
- 设置定位数据,并配置定位图层的信息
- 关闭定位图层 setMyLocationEnabled(false)
Activity中的代码如下:
private MapView mMapView;public final static String TAG = "Location";private BaiduMap mBaiduMap; //定义百度地图对象//记录是否第一次定位,然后在locationUpdates()方法中设置逻辑private boolean isFirstLoc = true;//当前定位模式private MyLocationConfiguration.LocationMode locationMode;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//初始化地图SDK,//需要在setContentView(R.layout.activity_main);上面SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);initMap(); //初始化地图locationProvice();//位置服务}private void initMap() {//获取地图控件引用mMapView = findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap(); //获取百度地图对象}/*** 初始化位置服务,获取当前所在位置*/private void locationProvice() {//获取位置服务LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);//获取最佳的LocationProvider//创建一个过滤条件对象//需要加入权限 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />Criteria criteria = new Criteria();//设置为不收费的criteria.setCostAllowed(false);//使用精度最准确的criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置中等耗电量criteria.setPowerRequirement(Criteria.POWER_MEDIUM);if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling// ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding// public void onRequestPermissionsResult(int requestCode, String[] permissions,// int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, //指定位置提供者1000, //间隔时间1, //位置间隔1米new LocationListener() {//监听GPS定位信息是否改变@Overridepublic void onLocationChanged(Location location) {//GPS信息发生改变时,回调locationUpdates(location);}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {//GPS状态发生改变时,回调}@Overridepublic void onProviderEnabled(String provider) {//定位提供者启动时回调}@Overridepublic void onProviderDisabled(String provider) {//定位提供者关闭时回调}});//获取最新的定位信息Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);//将最新的定位信息传递给locationUpdates()方法locationUpdates(location);}public void locationUpdates(Location location) {if (location != null) {LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());//创建一个字符串构建器,用于记录位置信息StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("您的位置是: \n");stringBuilder.append("经度: ");stringBuilder.append(location.getLongitude());stringBuilder.append("\n 纬度:");stringBuilder.append(location.getLatitude());Log.i(TAG, stringBuilder.toString());if (isFirstLoc) {//更新坐标位置MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);//设置地图位置mBaiduMap.animateMapStatus(update);isFirstLoc=false;}//构造定位数据MyLocationData locationData = new MyLocationData.Builder().accuracy(location.getAccuracy()) //设置精度.direction(0) //设置方向信息.latitude(location.getLatitude()) //设置纬度坐标.longitude(location.getLongitude()) //设置纬度坐标.build();mBaiduMap.setMyLocationData(locationData);//设置自定义图标BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);//设置定位模式locationMode = MyLocationConfiguration.LocationMode.NORMAL;//设置构造方式MyLocationConfiguration configuration = new MyLocationConfiguration(locationMode,true,bitmapDescriptor);//显示定位图标mBaiduMap.setMyLocationConfiguration(configuration);//然后再onStart()方法和onStop中添加//开启定位图层//mBaiduMap.setMyLocationEnabled(true);//停止定位图层// mBaiduMap.setMyLocationEnabled(false);} else {Log.i(TAG ,"没有获取到位置信息");}}@Overrideprotected void onStart() {super.onStart();//开启定位图层mBaiduMap.setMyLocationEnabled(true);}@Overrideprotected void onStop() {super.onStop();mBaiduMap.setMyLocationEnabled(false);}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();mMapView = null;}
地图实时定位我的位置相关推荐
- java 位置定位_地图实时定位我的位置
首先需要显示地图,请看我的另一篇文章 然后实时获取定位信息中的经度和纬度, 然后启动定位功能标记我的位置 开启定位图层 setMyLocationEnabled(true) 构造定位数据 MyLoca ...
- android高德地图默认当前位置,【报Bug】1.9.2 android 高德地图无法定位到当前位置...
详细问题描述 (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题) [内容] 1.9.2版本 a ...
- 高德地图实时定位显示图标和名字
前言:最近公司项目有个需要展示人员的实时定位和轨迹回放的需求,查阅了一些资料,最后决定用高德地图去实现. 注:人员的实时位置用的uniapp做的打包的app实时上传登录者的位置信息上传到后台,pc端获 ...
- 安卓高德地图实时定位方法的封装
安卓地图的开发对于一个没有地图开发经验的人来说还是有点摸不着头脑的,我刚开始的时候就走了很多弯路,现在将自己实现的方法分享出来,供大家参考: 首先要去到高德地图的开方平台申请key值:点击打开链接 然 ...
- 实现地图实时定位,拯救“路痴”
实时定位,已经成为应用必备能力之一,尤其是导航应用,更需要快速准确定位用户实时位置. 华为定位服务能够赋予应用程序快速.精准地获取用户位置信息的能力,同时定位服务助力全球开发者实现个性化地图呈现与交互 ...
- 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)
使用最新版本的百度地图需要注意的几个地方: 1.libs文件夹下要有android-support-v4.jar.baidumapapi_v2_1_0.jar.locSDK_3.1.jar三个jar包 ...
- Android基于高德地图实时定位服务
Service功能有:实时定位(后台进行) Service不会,去百度谷歌 功能有 实时定位(30秒间隔) 判断是否在规定的时间段内 判断距离是否大于规定的距离 判断服务是否在开启的状态 服务代码:L ...
- 高德地图很详细的用法 定位 搜索 添加小蓝点marker 移动地图实时定位
最近项目中需要用到地图的功能,看了下需求后,不多想,直接锁定高德地图,为什么不选择百度地图呢,这里本人觉得高德地图的文档让我看起来更爽,哈哈哈,进入主题吧 前题的申请key这里我就不讲啦,很简单,直接 ...
- Android:使用百度地图SDK定位当前具体位置(类似QQ发表说说的选择地点功能)
百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口. 可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问 ...
- html引入高德地图-实时定位
https://lbs.amap.com/ 高德地图开放平台 1.注册账号 2.控制台-应用管理-我的应用 创建 新应用 添加应用详情: 选择js-web <!-- https://lbs.a ...
最新文章
- java 人事_java版简易人事管理系统
- 【高效JDBC编程工具JadePool快速入门】
- bat批处理执行python_.bat批处理添加Python任务
- 搞不明白老板想要看哪种报表,熬夜做到两点也是白费28
- MyBatis的9种设计模式,我猜你不知道
- copy constructor和copy assignment operator的区别
- 大数据shipin教程_尚硅谷大数据视频教程,粉丝众多,人手一套尚硅谷教程
- JAVA: 初级项目之基于Swing界面的仿QQ(一)
- 自定义控件属性英文类别
- 幸运彩票 分数 15作者 陈越单位 浙江大学
- 天龙八部手游服务器维护公告,-天龙八部手游-详情页-官方网站-天龙八部官方唯一正版3DMMORPG武侠手游...
- springboot kafka集成
- 如何用电脑画平面坐标图_如何在WORD或者EXERL上画坐标图?
- Windows驱动_WDDM之一
- axture动画原型制作_小孩子最喜欢的国产“机甲”动画,90后全看过,00后一个也不知道...
- 【dBi、dBd和dBic的含义你真的知道吗?】
- cs2d怎么自建服务器,CS2D怎么注册USGN账号 USGN账号注册教程及作用一览
- 使用ADODB在C#
- iOS添加快捷方式到桌面
- 共识算法Raft概论
热门文章
- 正则表达式-re.error: unbalanced parenthesis at position 7
- DataFrame-删除行列
- dbind-WARNING **: Error retrieving accessibility bus address
- endNote教程-5、6-高效阅读文献+高效文献调研
- wordpress的excerpt()函数
- 编程之路之数据库(十)- PDO详解
- 在idea中启动tomcat项目报错提示“java.util.zip.ZipException: error in opening zip file“
- 吴恩达-deep learning 02.改善深层神经网络:超参数调试、正则化以及优化Week1
- 蒟蒻的控制台贪吃蛇(新手实验)
- 你身边长期不上班的人,靠什么活着?