在地圖接入使用中,很多開發者諮詢我們騰訊位置服務是否支援軌跡回放功能,所以今天特意將我們JavaScript API GL的軌跡回放&小車移動範例放到我們本篇文章分享。
在JavaScript API GL中,使用MultiMarker(點標記)中的moveAlong()方法 ,可以方便的實現軌跡回放功能,而且您可以對樣式進行各種想要的修改,比如修改小車圖片、不顯示路線或者改成您想要的顏色等。
//初始化地圖
var map = new TMap.Map("container", {
zoom: 15,
center: new TMap.LatLng(39.984104, 116.307503)
});
//小車移動路線
var path = [
new TMap.LatLng(39.98481500648338, 116.30571126937866),
new TMap.LatLng(39.982266575222155, 116.30596876144409),
new TMap.LatLng(39.982348784165886, 116.3111400604248),
new TMap.LatLng(39.978813710266024, 116.3111400604248),
new TMap.LatLng(39.978813710266024, 116.31699800491333)
];
//建立mareker(小車)
var marker = new TMap.MultiMarker({
map,
styles: { //樣式設定
'car-down': new TMap.MarkerStyle({
'width': 40, //小車圖片寬度(畫素)
'height': 40, //高度
'anchor': { //圖片中心的畫素位置(小車會保持車頭朝前,會以中心位置進行轉向)
x: 20,y: 20,
},
'faceTo': 'map', //取’map’讓小車貼於地面,faceTo取值說明請見下文圖示
'rotate': 180, //初始小車朝向(正北0度,順時針一週為360度,180為正南)
'src': './img/car.png', //小車圖片(圖中小車車頭向上,即正北0度)
})
},
geometries: [{ //小車marker的位置資訊
id: 'car', //因MultiMarker支援包含多個點標記,因此要給小車一個id
styleId: 'car-down', //繫結樣式
position: new TMap.LatLng(39.98481500648338, 116.30571126937866),//初始座標位置
}]
});
//呼叫moveAlong,實現小車移動
marker.moveAlong({
"car": { //設定讓"car"沿"path"移動,速度70公里/小時
path,
speed: 70
}
}, {
autoRotation:true //車頭始終向前(沿路線自動旋轉)
}
)
線上範例:https://lbs.qq.com/webDemoCenter/glAPI/glMarker/markerMoveAlong
JavascriptAPI GL為可傾斜旋轉的3D地圖,這就帶來了圖片是貼在地面,還是貼向螢幕的問題:
faceTo
: 「map
」 貼在地面,軌跡回放場景,車是要貼地的(左圖)
faceTo
:「screen
」 貼在螢幕,小車場景就不合適了,它會始終「立著」(中圖),"sreen
"適合於標註位置使用(右圖)
小車延路線運動的同時,控制視角跟隨小車運動,可以達到類似模擬導航、第三人稱遊戲視角的感覺,非常炫酷。