效果圖
前言
項目需求膝迎,需要做一個繪制行動軌跡的功能析恢,因為本身項目集成的是高德地圖液样,所以在此處,就針對高德地圖來簡單說一下繪制行動軌跡的功能岖赋。
使用到的功能
- 顯示地圖
- 定位
- 軌跡
- 實時位置信息存儲
說明
實現(xiàn)上面的功能檬果,可能遇到的問題,因為本文章記錄的是軌跡相關(guān)功能,所以定位或地圖顯示相關(guān)的問題选脊,就在此處不一一記錄杭抠,如果遇到問題,可以查看官方相關(guān)文檔恳啥,或者下載官方Demo偏灿。
分析及實現(xiàn)過程
因為要監(jiān)測地圖中心位置的實時變化,在項目中“禁止地圖拖動”钝的,這樣可以減少冗余數(shù)據(jù)翁垂,避免因為手動拖動地圖而產(chǎn)生的不準確經(jīng)緯度信息。
aMap.getUiSettings().setAllGesturesEnabled(false);//禁止地圖可拖動
由于項目界面底部是顯示的操作信息硝桩,故把地圖中心位置上移了(只是因為本項目有這個需求沿猜,故才上移,無此需求亿柑,可忽略)邢疙,設(shè)置指定中心位置的方法如下:
aMap.setPointToCenter(585, 520);//指定屏幕中心點
上面是對地圖功能和顯示等方面的一些限制棍弄,那么最終的實現(xiàn)代碼還是要在對地圖的監(jiān)聽上實現(xiàn)望薄。實現(xiàn)代碼如下:
//記得要生成一個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) {
}
});
監(jiān)聽有兩個方法onCameraChange和onCameraChangeFinish;其中onCameraChange方法是只要移動設(shè)備在不停的移動呼畸,就會實時的調(diào)用此方法(項目需求痕支,我此處是實時把經(jīng)緯度,傳遞給服務(wù)進行保存)蛮原;而onCameraChangeFinish是移動完成之后才會調(diào)用此方法卧须。當然,可以根據(jù)項目需求自己選擇使用儒陨。
繪制行動軌跡的代碼如下:
//官方文檔有更詳細的說明
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