iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
Modern Web

ML X 友廷等公車系列 第 14

Day 14 公車的移動軌跡

  • 分享至 

  • xImage
  •  

Code

item : API 回傳的經緯度
設定 icon 的圖片,大小需事先調好,程式碼沒辦法調整圖片大小。
並將 經緯度 包成 參數的傳入格式 latlng。

        var offSiteX = -0.00001532;
        var offSiteY =  0.00005708;

        for (var i = 0; i < items.length; i++){
            var img = new Image();
            img.src = './images/arrow3.pn g';
            var lat = Number(items[i].BusPosition.PositionLat) + offSiteY;
            var lon = Number(items[i].BusPosition.PositionLon) - offSiteX;
            var latlng = {lat: lat, lon: lon};
            var options = {
                img: img
            };
            var angleMarker = L.angleMarker(latlng, options); 

將上次API回傳的經緯度和這次API回傳的經緯度運算出角度,依照角度旋轉icon,並加入地圖。

        var angle = 0;
        for (var j=0;j<pre.length;j++)
        {
            if(pre[j]["key"]==items[i].PlateNumb)
            {
                var previousLatLng = {lat: pre[j].lat, lon:  pre[j].lon};
                var nextLanLng = {lat:items[i].BusPosition.PositionLat, lon:  items[i].BusPosition.PositionLon};
                angle = angleMarker.getAngle(previousLatLng, nextLanLng);
                angleMarker.setHeading(angle);
                if (angle!=0)  // 如果這次的經緯度和上次經緯度 有方向上的變化,則加入地圖
                {
                    mymap.addLayer(angleMarker);
                }
                delete pre[j]["key"]  // 清除上次經緯度紀錄
            }
        }
        pre.push({"key":items[i].PlateNumb,"lat":items[i].BusPosition.PositionLat,"lon":items[i].BusPosition.PositionLon}); // 加入這次經緯度紀錄

Demo

Yes
Yes
Yes

Ref


上一篇
Day 13 Arrows in Leaflet
下一篇
Day 15 動態旋轉Icon
系列文
ML X 友廷等公車30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言