Android使用高德地图实现运动轨迹绘制和轨迹回放
创始人
2024-02-25 15:42:39
0

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

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

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

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

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

一、定位


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 

 3:让轨迹上的图标移动

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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...