Android 高德地图 Polyline 实时绘制行动轨迹

Android 高德地图 Polyline 实时绘制行动轨迹_第1张图片

前言

项目需求,需要做一个绘制行动轨迹的功能,因为本身项目集成的是高德地图,所以在此处,就针对高德地图来简单说一下绘制行动轨迹的功能。

使用到的功能

  • 显示地图
  • 定位
  • 轨迹
  • 实时位置信息存储

说明

实现上面的功能,可能遇到的问题,因为本文章记录的是轨迹相关功能,所以定位或地图显示相关的问题,就在此处不一一记录,如果遇到问题,可以查看官方相关文档,或者下载官方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下载地址

你可能感兴趣的:(Android 高德地图 Polyline 实时绘制行动轨迹)