Android|Android 高德地图 Polyline 实时绘制行动轨迹
文章图片
前言 项目需求,需要做一个绘制行动轨迹的功能,因为本身项目集成的是高德地图,所以在此处,就针对高德地图来简单说一下绘制行动轨迹的功能。
使用到的功能
- 显示地图
- 定位
- 轨迹
- 实时位置信息存储
分析及实现过程 【Android|Android 高德地图 Polyline 实时绘制行动轨迹】因为要监测地图中心位置的实时变化,在项目中“禁止地图拖动”,这样可以减少冗余数据,避免因为手动拖动地图而产生的不准确经纬度信息。
aMap.getUiSettings().setAllGesturesEnabled(false); //禁止地图可拖动由于项目界面底部是显示的操作信息,故把地图中心位置上移了(只是因为本项目有这个需求,故才上移,无此需求,可忽略),设置指定中心位置的方法如下:
aMap.setPointToCenter(585, 520); //指定屏幕中心点上面是对地图功能和显示等方面的一些限制,那么最终的实现代码还是要在对地图的监听上实现。实现代码如下:
//记得要生成一个Polyline 属性对象哦
//private Polyline polyline;
aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
@Override
public void onCameraChange(final CameraPosition cameraPosition) {
//官方文档有更详细的说明
latLngs.add(new LatLng(cameraPosition.target.latitude,cameraPosition.target.longitude));
polyline= aMap.addPolyline(new PolylineOptions().addAll(latLngs).width(20).color(Color.argb(235, 1, 180, 247)));
}
@Override
public void onCameraChangeFinish(final CameraPosition cameraPosition) {}
});
监听有两个方法onCameraChange和onCameraChangeFinish;其中onCameraChange方法是只要移动设备在不停的移动,就会实时的调用此方法(项目需求,我此处是实时把经纬度,传递给服务进行保存);而onCameraChangeFinish是移动完成之后才会调用此方法。当然,可以根据项目需求自己选择使用。
绘制行动轨迹的代码如下:
//官方文档有更详细的说明
latLngs.add(new LatLng(cameraPosition.target.latitude,cameraPosition.target.longitude));
polyline= aMap.addPolyline(new PolylineOptions().addAll(latLngs).width(20).color(Color.argb(235, 1, 180, 247)));
demo下载地址
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- 拿着旧地图,找不到新大陆
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)