騰訊位置服務實現軌跡回放

2020-10-17 12:00:56

前言

在地圖接入使用中,很多開發者諮詢我們騰訊位置服務是否支援軌跡回放功能,所以今天特意將我們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

關於MultiMarker的faceTo說明:

JavascriptAPI GL為可傾斜旋轉的3D地圖,這就帶來了圖片是貼在地面,還是貼向螢幕的問題:

faceTo: 「map」 貼在地面,軌跡回放場景,車是要貼地的(左圖)

faceTo:「screen」 貼在螢幕,小車場景就不合適了,它會始終「立著」(中圖),"sreen"適合於標註位置使用(右圖)

視角跟隨小車移動(近期推出,敬請期待)

小車延路線運動的同時,控制視角跟隨小車運動,可以達到類似模擬導航、第三人稱遊戲視角的感覺,非常炫酷。