Android使用高德地图实现运动轨迹绘制和轨迹回放

本文介绍了如何利用高德地图API实现运动轨迹的实时定位、坐标记录以及轨迹的动态绘制过程。通过AMapLocationClient和自定义选项,详细展示了定位设置、坐标保存和地图上绘制多色轨迹的方法,适合开发者学习地理定位与轨迹应用开发。
摘要由CSDN通过智能技术生成

功能的实现完全是使用高德地图进行实现的,先看一下效果图吧!

下图是在绘制轨迹的过程:

下图是在轨迹回放的过程:

 下图是记录运动的时间区间:

其实这个实现起来还是很容易的,总体逻辑就是:定位——记录坐标——绘制轨迹

一、定位


AMapLocation   mlocationClient = new AMapLocationClient(getActivity());
        // 初始化定位参数
        mLocationOption = new AMapLocationClientOption();
        // 设置定位监听
        mlocationClient.setLocationListener(this);
        // 设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Device_Sensors);
        // 设置定位间隔,单位毫秒,默认为2000ms
        mLocationOption.setInterval(5000);
        mLocationOption.setOnceLocation(false);
        //设置是否返回地址信息(默认返回地址信息)
        mLocationOption.setNeedAddress(true);
        // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
        // 注意设置合适的定位时间的间隔(最小间隔支持为1000ms),并且在合适时间调用stopLocation()方法来取消定位请求
        // 在定位结束后,在合适的生命周期调用onDestroy()方法
        // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
        // 启动定位
        mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.Sport);
 mlocationClient.setLocationOption(mLocationOption);
                    //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
 mlocationClient.stopLocation();
 mlocationClient.startLocation();

 二、记录坐标

对于记录坐标就需要使用服务端的接口来实现,通过定位之后记录当前的经纬度坐标,然后记录应用户的信息进行保存就可以了;

坐标在记录的时候可以设置定位的时间间隔,假如运动的区间很小的话可以吧定位的时间设置的小一些,这样在绘制轨迹的时候轨迹会平滑一些

、轨迹绘制

 1:初始化线条样式

texTuresList.add(BitmapDescriptorFactory.fromResource(R.drawable.map_alr));
texTuresList.add(BitmapDescriptorFactory.fromResource(R.drawable.custtexture));
texTuresList.add(BitmapDescriptorFactory.fromResource(R.drawable.map_alr_night));
//指定某一段用某个纹理,对应texTuresList的index即可, 四个点对应三段颜色
texIndexList.add(0);
texIndexList.add(2);
texIndexList.add(1);
options = new PolylineOptions();
options.width(30);//设置宽度
//加入对应的颜色,使用setCustomTextureList 即表示使用多纹理;
options.setCustomTextureList(texTuresList);
//设置纹理对应的Index
options.setCustomTextureIndex(texIndexList);

mUiSettings = aMap.getUiSettings();//实例化UiSettings类对象

mUiSettings.setZoomControlsEnabled(false);
mUiSettings.setMyLocationButtonEnabled(false); //显示默认的定位按钮

aMap.setOnMyLocationChangeListener(this);
aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false

 2:通过循环吧坐标设置到地图上

for(int i=0;i<list_result.size();i++){
    options.add(new LatLng(Double.valueOf(list_result.get(i).getAddressZB().split(",")[1]), Double.valueOf(list_result.get(i).getAddressZB().split(",")[0])));
}
if(mLocation!=null){
    options.add(new LatLng(mLocation.getLatitude(),mLocation.getLongitude()));
}

aMap.addPolyline(options);

 3:让轨迹上的图标移动

aMap.moveCamera(CameraUpdateFactory.zoomTo(13));

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
在Flutter中,使用高德地图绘制轨迹需要以下几个步骤: 第一步,需要在pubspec.yaml文件中添加高德地图插件依赖。可以在Flutter官方插件网站找到相关的插件信息,并将其添加到pubspec.yaml中。 第二步,创建一个地图页面并引入相关的库文件。在Flutter中,可以使用‘import’语句导入所需的库文件。然后,创建一个StatefulWidget类,并在build方法中返回一个Scaffold组件作为页面的根组件。 第三步,获取定位数据。使用Flutter的定位插件获取当前设备的位置信息。可以在页面初始化时通过初始化插件,并获取位置信息。然后,将位置信息传递给地图组件。 第四步,将地图放置在页面上。可以使用高德地图插件提供的MapView组件将地图添加到页面中。同时,配置相关的地图参数,如地图的缩放级别、中心点等。 第五步,绘制轨迹。将获取到的位置信息按时间顺序记录下来,并在地图上根据位置数据绘制轨迹。可以使用高德地图插件提供的Polyline组件进行轨迹绘制。 第六步,更新轨迹。随着设备位置的变化,需要实时更新轨迹。可以通过监听定位插件的位置变化事件,获取到最新的位置信息,并更新轨迹。 最后,注意进行相关的错误处理和资源释放工作。在使用过程中,需要注意处理异常情况,如设备不支持定位等。同时,在不需要使用地图时,需要释放相关的资源,以免造成资源浪费。 综上所述,使用Flutter绘制高德地图轨迹需要引入相关的插件依赖,获取设备的位置信息,将地图添加到页面上并配置相关参数,根据位置数据绘制轨迹,并实时更新轨迹。同时还需处理异常情况和释放资源。这样就可以实现在Flutter中绘制高德地图轨迹的功能了。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Android毕业设计源码

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值