百度地图定位与运动轨迹

  • Android开发的前期准备
    • 地图图层显示与定位
      • 运动轨迹的简单绘制

Android开发的前期准备

Android配置在百度地图SDK官网上有详细的说明。具体可以参考官网的教程,笔者觉得官网的总结的很细,笔者初学,就不耍大刀了。
以下就是官网地址:
https://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/ak

当然,按照官网上的步骤,初学会有一些小问题,稍后会在另一篇文章中展现笔者在初学遇见的问题与解决方法。

在最起初,遇见的问题,让笔者摸不着头脑,找不到错误的原因,也搜索了很多文章,都快放弃了,还好,到后面解决了。

言归正传。

地图图层显示与定位

地图SDK提供了3种预置的地图类型,包括普通地图,卫星图,空白地图。另外提供了2种常用图层实时路况图以及百度城市热力图

可以根据自己的需求选择。笔者用的是普通地图
上代码:

// An highlighted block
public class MyMap extends AppCompatActivity {private MapView mMapView=null;LocationClient mLocationClient;BaiduMap mbaiduMap;MyLocationListener myLocationListener;LocationClientOption option;LatLng latLng;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_my_map);tv_1=findViewById(R.id.tv_mapmun);//这里是询问用户是否开启定位等权限List<String> permissionList = new ArrayList<>();if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);}if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.READ_PHONE_STATE);}if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);}if(!permissionList.isEmpty()){String[] permissions =permissionList.toArray(new String[permissionList.size()]);ActivityCompat.requestPermissions(this, permissions, 1);}initLocation();}private void initLocation(){mMapView=findViewById(R.id.bmapView);mbaiduMap=mMapView.getMap();ppp=new ArrayList<LatLng>();mLocationClient=new LocationClient(this);if(mLocationClient != null&& !mLocationClient.isStarted()){mLocationClient.requestLocation();mLocationClient.start();}option=new LocationClientOption();myLocationListener=new MyLocationListener();mLocationClient.registerLocationListener(myLocationListener);option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);option.setOpenGps(true);option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);option.setCoorType("bd09ll");option.setIsNeedAddress(true);option.setNeedDeviceDirect(true);option.setScanSpan(1001);mLocationClient.setLocOption(option);mLocationClient.start();}
public class MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {//mapView 销毁后不在处理新接收的位置if (location == null || mMapView == null){return;}MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(location.getDirection()).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);}
}@Overrideprotected void onStart() {super.onStart();mbaiduMap.setMyLocationEnabled(true);if (mLocationClient.isStarted())mLocationClient.start();}@Overridepublic void onResume() {super.onResume();mMapView.onResume();}@Overridepublic void onPause() {super.onPause();mMapView.onPause();}@Overridepublic void onDestroy() {mLocationClient.stop();mbaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView=null;super.onDestroy();mMapView.onDestroy();}}
//地图初始化
public class DemoApplication extends Application {@Overridepublic void onCreate() {super.onCreate();SDKInitializer.initialize(this);SDKInitializer.setCoordType(CoordType.BD09LL);}
}

以上就是实现地图的全部代码,记得打开存储权限,不然不会显示图层只有空白。完成以上步骤就可以在应用上显示自己的定位。

这是实现后的图片

运动轨迹的简单绘制

运动轨迹实现方法用的是:
每隔一定的时间收集当前位置的信息,把多个点连起来,绘制成轨迹展现。

public void onReceiveLocation(BDLocation bdLocation) {if(bdLocation ==null||mMapView ==null){return;}MyLocationData locData=new MyLocationData.Builder().accuracy(bdLocation.getRadius()).direction(bdLocation.getDirection()).latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build();mbaiduMap.setMyLocationData(locData);if(frist){frist=false;latLng = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());MapStatus.Builder builder=new MapStatus.Builder();builder.target(latLng).zoom(18.0f);mbaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);mbaiduMap.animateMapStatus(msu);}LatLng pointsss=new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());if(pointsss.longitude>0&&pointsss.latitude>0)ppp.add(pointsss);if(ppp.size()>=2){OverlayOptions mOverlay=new PolylineOptions().width(10).color(0xAAFF0000).points(ppp);Overlay mPolyline=(Polyline)mbaiduMap.addOverlay(mOverlay);mPolyline.setZIndex(3);}//在日志中打印出点的位置信息,方便观察Log.i("MyMap",  " latitude:" + bdLocation.getLatitude()+ " longitude:" + bdLocation.getLongitude() + ppp.size());}}

以上就是全部的代码。

在绘制轨迹时,需要把第一个点(也就是在几内亚湾)去掉,因为系统最开始会定位到那个点,具体的原因笔者也不清楚。

希望给大家一点帮助和参考。

1


  1. 笔者初学,有很多错误,望大家指正。 ↩︎

Android studio 百度地图SDK之地图定位与运动轨迹绘制相关推荐

  1. Android studio百度地图之定位到国外

    定位在国外的问题 在定位时,除了会定位到几内亚湾,还可能会定位到美国,这个原因可能是因为你的模拟器的问题,在弄地图定位的时候,尽量使用真机或者第三方模拟器,像Android studio自带的模拟器在 ...

  2. Android studio 百度地图开发(5)查询周边服务(加油站)

    Android studio 百度地图开发(5)查询周边服务(加油站) email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是An ...

  3. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 工程下载地址:http://blog.csdn.net/chentravelling ...

  4. 用android studio测量距离,Android studio 百度地图开发(6)Marker绑定事件、计算两点距离...

    Android studio 百度地图开发(6)Marker绑定事件.计算两点距离 email:chentravelling@163.com 开发环境:win7 64位,Android Studio, ...

  5. Android 整合高德地图SDK实现 地图预览,定位,模拟导航

    一.准备工作 1. 到高德地图官方网申请key: 我的应用 | 高德控制台 2. 申请key方法请参考:获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 3. 出现的问题 ...

  6. Android中集成高德地图SDK实现地图定位和导航功能(二)

    我们接着上一篇文章开始继续实现android中集成高德地图的SDK实现地图 定位,搜索,导航的功能 如何让地图在手机上实现呢? 1.配置AndroidManifest 中的权限申请 可以参考官方文档 ...

  7. Android中集成高德地图SDK实现地图定位和导航功能(一)

    一.前期准备工作 1.在高德地图开发者平创建一个自己的项目 名称和应用类型随便填 2.添加Key 1.添加key 2.获取SHA1值 2.1.使用windwos+R 输入cmd 打开控制窗口 输入 w ...

  8. 基于百度地图sdk的地图app开发(七)——导航和模拟导航

    这是基于百度地图sdk的地图app开发系列博客第七篇 代码仓库位置:https://github.com/YanhuiLu89/lmap.git 上一篇 基于百度地图sdk的地图app开发(六)--路 ...

  9. android 使用百度全景sdk出现的问题

    android 使用百度全景sdk出现的问题 - - 问题:未认证的key 1.下载百度需要的一些功能包,特别是要使用全景功能,结果一直出现未认证的key也不出现全景街景 解决办法:后来使用了以前下的 ...

  10. 重装android studio 始终提示SDK installed

    重装android studio 始终提示SDK installed 重装完android studio 之后,要新建项目提示,sdk丢失需要重新安装 然后点击打开SDK管理器,设置SDK安装目录,我 ...

最新文章

  1. java中的几个概念的比较
  2. java环境变量_java环境变量
  3. js滚动页面到固定位置进行操作
  4. Linux与win2003下修改mac地址方法
  5. matlab的一个疑问?
  6. python基础技巧总结(三)
  7. lisp 读取dwg 统计信息_预制梁厂 BIM 技术和自动化、信息化应用方案
  8. Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑
  9. mac上键盘说明以及intellij 快捷键的使用
  10. Android 动态权限申请
  11. NB IoT技术简介
  12. LR9.10破解方法。
  13. 借助终端软件,有效统一移动互联网和物联网
  14. oracle sql 实现三张表左连接查询
  15. 小知识--Windows10许可证即将过期
  16. pm2 部署 nuxt3.js 项目并设置服务器重启时项目自动重启
  17. caffe常用层:Reduction层
  18. Linux学习笔记---命令篇
  19. MIKE 21 教程 1.5 基于卫星影像绘制河道边界
  20. 5.1-5.31推荐文章汇总

热门文章

  1. 玖益科技:商品详情页的提升方法
  2. 关于如何免费下载专利、英文文献等?
  3. python处理点云数据_python将指定点云文件(asc)转换为PCD格式
  4. 免安装PortableGit配置 + TortoiseGit安装
  5. perl实现根据序列ID从提取fasta文件序列
  6. 苹果为小学生推出编程指南
  7. Python sklearn 分类效果评估
  8. 二手车APP软件开发主要功能
  9. 在python程序中,#后面的语句是表示啥意思
  10. STM32不能进入睡眠模式