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

轨迹效果图

前言

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

使用到的功能

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

说明

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

欢迎关注

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
要在地图上绘制行动轨迹,你需要使用一个合适的地图API,比如谷歌地图API或百度地图API。这些API提供了一些绘制图形的工具,可以帮助你在地图上绘制线轨迹。 下面是一个使用百度地图API绘制行动轨迹的示例: 1. 首先,引入百度地图API和相关的绘制工具库: ``` <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script> <script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script> <link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"> ``` 2. 创建一个地图实例: ``` var map = new BMap.Map("map-container"); map.centerAndZoom(new BMap.Point(116.404, 39.915), 15); ``` 3. 创建一个绘制管理器实例: ``` var drawingManager = new BMapLib.DrawingManager(map, { isOpen: false, // 是否开启绘制模式 enableDrawingTool: true, // 是否显示工具栏 drawingToolOptions: { anchor: BMAP_ANCHOR_TOP_RIGHT, // 工具栏位置 offset: new BMap.Size(5, 5), // 工具栏偏移量 drawingModes: [BMAP_DRAWING_POLYLINE] // 允许绘制的图形类型 }, polylineOptions: { strokeColor: "#0000ff", // 线颜色 strokeWeight: 5, // 线宽度 strokeOpacity: 0.8 // 线透明度 } }); ``` 4. 开始绘制行动轨迹: ``` drawingManager.setDrawingMode(BMAP_DRAWING_POLYLINE); drawingManager.open(); ``` 5. 保存绘制结果: ``` drawingManager.addEventListener("overlaycomplete", function(e){ var polyline = e.overlay; var path = polyline.getPath(); // 这里可以将path保存到数据库或者其他地方进行存储 }); ``` 以上就是使用百度地图API绘制行动轨迹的基本流程。你可以根据自己的需求进行调整和优化。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DT从零到壹

您的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值