mapboxgl實(shí)現(xiàn)帶箭頭軌跡線的代碼
最近在使用mapboxgl實(shí)現(xiàn)軌跡展示時(shí),想實(shí)現(xiàn)類似高德地圖導(dǎo)航軌跡效果,然而并未在網(wǎng)上找到類似示例。經(jīng)一番研究與嘗試,最終解決,效果如下。
添加箭頭核心代碼如下,只需在配置layout
中添加symbol-placement
和symbol-spacing
屬性即可:
// 添加箭頭圖層 function addArrowlayer() { map.addLayer({ 'id': 'arrowLayer', 'type': 'symbol', 'source': { 'type': 'geojson', 'data': routeGeoJson //軌跡geojson格式數(shù)據(jù) }, 'layout': { 'symbol-placement': 'line', 'symbol-spacing': 50, // 圖標(biāo)間隔,默認(rèn)為250 'icon-image': 'arrowIcon', //箭頭圖標(biāo) 'icon-size': 0.5 } }); }
然而,為實(shí)現(xiàn)上述效果,確走了不少彎路。曾嘗試集成Leaflet.PolylineDecorator
插件核心算法,通過對線的處理,計(jì)算每個(gè)箭頭所在位置以及角度,也能實(shí)現(xiàn)上述效果。不過該方案在地圖傾斜旋轉(zhuǎn)后,有時(shí)會有箭頭偏移的bug。
在解決此bug過程中,不經(jīng)意間看到道路標(biāo)注都是沿道路線方向,突然有了新的靈感。
重新查看mapboxgl API
,發(fā)現(xiàn)將layout
中的symbol-placement
設(shè)置為line
,即可實(shí)現(xiàn)沿著線的方向繪制箭頭。
注意:
1.我所用圖標(biāo)為右側(cè)方向箭頭,結(jié)果與實(shí)際方向相符,如果圖標(biāo)為向上箭頭,需修改icon-rotate
為90。
2.只把symbol-placement
設(shè)置為line
,箭頭間距過于稀疏;需要設(shè)置下symbol-spacing
參數(shù),symbol-spacing
默認(rèn)值為250,修改為50即可實(shí)現(xiàn)文章首頁圖片效果。
在線示例
在線示例:http://gisarmory.xyz/blog/index.html?demo=MapboxGLPolylineDecorator
代碼地址:http://gisarmory.xyz/blog/index.html?source=MapboxGLPolylineDecorator
原文地址:http://gisarmory.xyz/blog/index.html?blog=MapboxGLPolylineDecorator。
到此這篇關(guān)于mapboxgl實(shí)現(xiàn)帶箭頭軌跡線的文章就介紹到這了,更多相關(guān)mapboxgl實(shí)現(xiàn)帶箭頭軌跡線內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
layui實(shí)現(xiàn)鼠標(biāo)移動到單元格上顯示數(shù)據(jù)的方法
今天小編就為大家分享一篇layui實(shí)現(xiàn)鼠標(biāo)移動到單元格上顯示數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09JS 組件系列之Bootstrap Table 凍結(jié)列功能IE瀏覽器兼容性問題解決方案
這篇文章主要介紹了JS 組件系列之Bootstrap Table 凍結(jié)列功能IE瀏覽器兼容性問題解決方案,需要的朋友可以參考下2017-06-06Javascript 數(shù)組去重的方法(四種)詳解及實(shí)例代碼
這篇文章主要介紹了Javascript 數(shù)組去重的方法(四種)詳解及實(shí)例代碼的相關(guān)資料,這里對四種去重方法進(jìn)行了詳細(xì)介紹,并附代碼實(shí)例,需要的朋友可以參考下2016-11-11A標(biāo)簽觸發(fā)onclick事件而不跳轉(zhuǎn)的多種解決方法
一個(gè)標(biāo)簽僅僅是要觸發(fā)onclick行為,遇到了A標(biāo)簽觸發(fā)onclick事件時(shí)不執(zhí)行跳轉(zhuǎn),下面與大家分享下四種解決方法,感興趣的朋友可以參考下哈2013-06-06js求數(shù)組最大值的八種具體實(shí)現(xiàn)方法
數(shù)組如何求最大值,想必很多的朋友都不會吧,下面這篇文章主要給大家介紹了關(guān)于使用js求數(shù)組最大值的八種方法具體實(shí)現(xiàn)的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-09-09JS基于面向?qū)ο髮?shí)現(xiàn)的放煙花效果
這篇文章主要介紹了JS基于面向?qū)ο髮?shí)現(xiàn)的放煙花效果,涉及javascript面向?qū)ο蠹夹g(shù)的使用技巧,需要的朋友可以參考下2015-05-05