美文网首页安卓地图专题
Android 高德地图 Polyline 实时绘制行动轨迹

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

作者: DT慕枫 | 来源:发表于2020-07-08 16:45 被阅读0次

    效果图

    轨迹效果图

    前言

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

    使用到的功能

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

    说明

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

        本文链接:https://www.haomeiwen.com/subject/smbccktx.html