Android 高德地图 Polyline 实时绘制行动轨迹
2020-07-08 本文已影响0人
DT慕枫
效果图
轨迹效果图前言
项目需求,需要做一个绘制行动轨迹的功能,因为本身项目集成的是高德地图,所以在此处,就针对高德地图来简单说一下绘制行动轨迹的功能。
使用到的功能
- 显示地图
- 定位
- 轨迹
- 实时位置信息存储
说明
实现上面的功能,可能遇到的问题,因为本文章记录的是轨迹相关功能,所以定位或地图显示相关的问题,就在此处不一一记录,如果遇到问题,可以查看官方相关文档,或者下载官方Demo。
分析及实现过程
因为要监测地图中心位置的实时变化,在项目中“禁止地图拖动”,这样可以减少冗余数据,避免因为手动拖动地图而产生的不准确经纬度信息。
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