近期由於業務的需求,讓我這從未想過要碰web gis的業餘前端開發者,走了web gis的開發道路。功能需求很簡單,但卻也是讓自己難為了好幾天。如,應該選擇那個gis框架,gis框架的相容性如何,直接ie哪些版,能不能簡單到只有一張就行解決問題,等等。。。。。。
在如此多的技術盲點,以及不確定的因素,我開始了征程,現將一些心得做些記錄。
客戶需要的功能就是能在一張gis圖上實現小車根據路徑進行移動,為什麼一定要gis呢(這是客戶指定需求,無語一該)。並且客戶還說底圖要很容易更換,但他想要用gis表現的卻是室內的地理資訊,我也沒辦法用baidu, 高德等現成的gis介面。
針對上述需求,我沒有去了解過多的web gis框架。因為客戶對gis的概念就是能放大,縮小,可以做路徑規劃等。所以我就選擇ol,利用他的靜態(選擇這個是為滿足客戶靈活更新底圖的需求)做gis底圖的功能來解決此問題。
由於是技術驗證**, 有些雜亂,現只給出關鍵性**。如有業務需要歡迎共同討論。
此步驟還是相對簡單的,主要用到ol的draw物件,**哪下:
draw(type));關鍵**在於drawend事件的監聽,如果是linestring情況,就將此feature放在乙個共公變數,方便路徑執行時使用。this._draw.on('drawend', (event)=>
if(type != 'icon') return
; let f =event.feature;
f.setstyle(
newstyle(),
text:
newtext()
})}));
f.type = 'battery';
});this.map.addinteraction(this
._draw);
this._snap = new snap();
this.map.addinteraction(this
._snap);
}
此部分就是獲取到3.1步驟的路徑路徑,然後進行解析,因為3.1上的linestring是多個線段的集合,但運動其本質就是改變圖示的座標,使其快速且連續的變化就形成了移動效果。所以這裡有乙個方法進行路徑細分,**如下:
cuttrace()其中用到了一些數學上的三角函式和計算方法。此方法最終選乙個根據步長計算後的座標集合。else
destcroods.push(nextpoint);
}while(curstep * step
}return
destcroods;
}
**如下:
tracerun()此移動**的是用ol的postcompose事件進行實現的,因為render方法執行完成後會觸發postcompose事件,所以就代替了定時器的的實現方案。其中rotation根據兩點座標計算出移**標的斜度、以及移動的方向等,更為影響的展示。movefeature(event)
let dx, dy, rotation;
if(this.tracecroods[index] && this.tracecroods[index + 1])
dx = bcrood[0] - ecrood[0];
dy = bcrood[1] - ecrood[1];
rotation =math.atan2(dy,dx);
if(rotation > (math.pi / 2))
else
if(rotation < -1 * (math.pi / 2))
else
console.log(dx + ' ' + dy + ' ' +rotation);
let curpoint = this
.tracecroods[index];
var anchor = new
feature(curpoint);
let style = new
style(),
text:
newtext(),
offsety: -20})
});
vcxt.drawfeature(anchor, style);
}
this
.map.render();
}
openlayer3之高階標註實現
首先看實現效果 實現要點 1 樹形標註實現 2 複雜標註樣式定義 3 效率優化 1.樹形標註實現 樹形標註採用字型符號來實現,包括以下幾個步驟 1 載入字型 2 設定標註值與字型對照關係 3 設定textstyle 2.複雜標註樣式定義 1 使用格網來定義每個標註部分所佔單元格跨度 2 將每個部分的...
SVG文字沿指定路徑運動
一 引用svg 二 獲取節點 htmlobj document.getelementbyid roomshere svgdoc htmlobj.getsvgdocument svgroot svgdoc.documentelement 三 新增路徑四 建立外部節點 方便刪除 var g docume...
運動模糊的實現
運動模糊常用於烘托遊戲氣氛 製作場景動畫,以及遊戲的畫面特效中,賽車類遊戲很常見此類特效,還有一些忍者遊戲中的忍者快速移動後的拖尾效果也是如此原理。運動模糊效果圖 運動模糊的原理很簡單,即多遍繪製畫面。依次繪製第n和第n 1 n 2 幀畫面,而且每次繪製將透明度降低形成消逝的感覺。具體需要模糊多少幀...