vue-baidu-map實(shí)現(xiàn)區(qū)域圈線和路徑的漸變色
vue-baidu-map區(qū)域圈線和路徑的漸變色

代碼:
- 圈的部分有兩種寫(xiě)法一種是用組件直接寫(xiě),一種是不用組件。
- 這里因?yàn)槲业臄?shù)據(jù)是動(dòng)態(tài)的,上面地圖的點(diǎn)還有路線需要切換,但是區(qū)域的線不用切換。
- 就采用了不是組件的寫(xiě)法。
圈的地區(qū)
方法一:采用畫(huà)線組件bm-polyline
<bm-polyline
:path="polylinePath"
stroke-color="#00ccff"
:stroke-opacity="1"
:stroke-weight="2"
:editing="false"
></bm-polyline>
// 漸變色是在app.vue里面寫(xiě)的
svg path{
filter: drop-shadow(2px 4px 6px #00ccff);
}方法二:自己手動(dòng)添加
// 我是把這個(gè)方法單獨(dú)拿出來(lái)了,使用的時(shí)候引用就好
getArea(){
var polyliness = []
this.polylinePath.forEach((i) => {
polyliness.push(new this.BMap.Point(i.lng, i.lat));
});
var polylinea = new this.BMap.Polyline(polyliness, {strokeColor: "#00ccff", strokeWeight: 1, strokeOpacity: 3}); //創(chuàng)建折線
//參數(shù):顏色,線的寬度,線的透明度
this.map.addOverlay(polylinea);
polylinea.disableMassClear();//這個(gè)是防止下面我刪除線的時(shí)候它不刪除
},路徑的折線
同樣我也是分出來(lái)了。
但因?yàn)樗臄?shù)據(jù)是根據(jù)后臺(tái)獲得的,會(huì)有延遲,所以在調(diào)用它的時(shí)候需要加個(gè)延遲器
//添加路線箭頭
getPoly(){
//創(chuàng)建路線
var sy = new this.BMap.Symbol(BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW, {
scale: 0.6, //圖標(biāo)縮放大小
strokeColor: "#24a9fa", //設(shè)置矢量圖標(biāo)的線填充顏色
strokeWeight: "2", //設(shè)置線寬
});
var icons = new this.BMap.IconSequence(sy, "10", "30");
this.pointList = JSON.parse(JSON.stringify(this.pointList))
// 創(chuàng)建polyline對(duì)象
var pois = [];
this.pointList.forEach((i) => {
pois.push(new this.BMap.Point(i.lng, i.lat));
});
// 插入漸變
// let mapE = document.getElementsByClassName("bm-view")[1];
setTimeout(()=>{
let svgE = document.getElementsByTagName("svg")[0];
console.log("svg",svgE)
let def = `<defs>
<linearGradient id="MyGradient">
<stop offset="0%" stop-color="#2c468b" />
<stop offset="50%" stop-color="#2f5d95" />
<stop offset="100%" stop-color="#24a9fa" />
</linearGradient>
</defs>`;
// if (svgE.length==0) {
// for(let i in svgE) {
// console.log("i",i)
svgE.insertAdjacentHTML("afterBegin",def);
// }
// }
},1000)
var sj = new this.BMap.Polyline(pois, {
enableEditing: false, //是否啟用線編輯,默認(rèn)為false
enableClicking: true, //是否響應(yīng)點(diǎn)擊事件,默認(rèn)為true
icons: [icons],
strokeWeight: "3", //折線的寬度,以像素為單位
strokeOpacity: 0.8, //折線的透明度,取值范圍0 - 1
strokeColor: "url(#MyGradient)", //折線顏色
// strokeColor: "red", //折線顏色
});
this.map.addOverlay(sj); //增加折線
},
//調(diào)用,在需要調(diào)用的地方加上它
setTimeout(()=>{
this.getPoly()
},300)總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue + AnimeJS實(shí)現(xiàn)3d輪播圖的詳細(xì)代碼
輪播圖在開(kāi)發(fā)中是經(jīng)常用到的,3D輪播圖是其中最常用的一種,所以在這篇文章中將給大家介紹Vue + AnimeJS實(shí)現(xiàn)3d輪播圖,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01
vue腳手架安裝出錯(cuò)的問(wèn)題及解決過(guò)程
文章介紹了在使用Vue腳手架安裝過(guò)程中遇到錯(cuò)誤的解決方法,包括卸載并重新安裝Node.js、使用cnpm安裝Vue CLI、配置全局緩存路徑以及設(shè)置環(huán)境變量等步驟2026-03-03
Vue中子組件不能修改父組件傳來(lái)的Prop值的原因分析
在Vue中,父子組件之間通過(guò)Prop和Event實(shí)現(xiàn)了數(shù)據(jù)的雙向綁定,但是,Vue設(shè)計(jì)者為什么不允許子組件修改父組件傳遞的Prop呢,本文就來(lái)帶大家探究為什么子組件不能修改Prop,需要的朋友可以參考下2023-06-06
關(guān)于vue2響應(yīng)式缺陷的問(wèn)題
這篇文章主要介紹了關(guān)于vue2響應(yīng)式缺陷的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Vue3+Element-Plus?實(shí)現(xiàn)點(diǎn)擊左側(cè)菜單時(shí)顯示不同內(nèi)容組件展示在Main區(qū)域功能
這篇文章主要介紹了Vue3+Element-Plus?實(shí)現(xiàn)點(diǎn)擊左側(cè)菜單時(shí)顯示不同內(nèi)容組件展示在Main區(qū)域功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
vue-router 路由傳參問(wèn)題(路由傳參方式)
路由傳參主要有兩種方式一種是路徑傳參一種是參數(shù)傳遞,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11
vue父組件數(shù)據(jù)更新子組件相關(guān)內(nèi)容未改變問(wèn)題(用watch解決)
這篇文章主要介紹了vue父組件數(shù)據(jù)更新子組件相關(guān)內(nèi)容未改變問(wèn)題(用watch解決),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

