vue百度地圖修改折線顏色,添加icon和文字標(biāo)注方式
vue百度地圖修改折線顏色,添加icon和文字標(biāo)注
百度地圖 折線修改顏色,添加icon和文字標(biāo)注
項(xiàng)目場景
以折線的形式展示BD簽到路徑,每條折線代表不同BD的簽到,并且每條折線顏色不同(這里是8個(gè)顏色,循環(huán)設(shè)置),標(biāo)注文字為依次簽到的地點(diǎn)數(shù)量;
說明:
原本我打算全部用Vue集成的 vue-baidu-map來實(shí)現(xiàn),但是后面開發(fā)過程中,發(fā)現(xiàn)修改折線顏色、添加icon和文字比較困難,所以改用了原生 BMap來實(shí)現(xiàn)。
具體步驟
1、安裝依賴
npm install vue-baidu-map --save
2、引入需要的組件
import { BaiduMap, BmNavigation } from 'vue-baidu-map/components';
3、模板中使用組件
<baidu-map class="bm-view" :ak="mapAk" :center="center" :zoom="zoom" :scroll-wheel-zoom="scrollZoom" NavigationControlType="BMAP_NAVIGATION_CONTROL_LARGE" @ready="mapReady"> <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"/> </baidu-map>
4、data中定義數(shù)據(jù)
1)基礎(chǔ)數(shù)據(jù)
2)colorList:存放折線的顏色和標(biāo)注icon
3)mapList:存放坐標(biāo)點(diǎn)數(shù)據(jù)
mapList: [ [ { lng: 116.404, lat: 39.915 }, { lng: 116.403, lat: 39.914 }, ], [ { lng: 116.414, lat: 39.925 }, { lng: 116.413, lat: 39.924 }, { lng: 116.503, lat: 39.913 }, ], ]
5、繪制
1)在 mapReady中給 BMap和 map賦值,后面代碼會(huì)用到;
mapReady ({ BMap, map }) { this.BMap = BMap; this.map = map; },
2)繪制地圖
drawMap () { let BMap = this.BMap; let map = this.map; map.clearOverlays(); // 清除覆蓋物 let data = this.mapList; // 這里是數(shù)據(jù)改變時(shí),地圖中心點(diǎn)定位到當(dāng)前第一條數(shù)據(jù)的第一個(gè)坐標(biāo)點(diǎn)或者默認(rèn)的中心坐標(biāo) let point = data.length && data[0].length ? data[0][0] : this.centerPoint; this.center = { lng: point.lng, lat: point.lat }; for (let i = 0; i < data.length; i++) { let points = []; for (let j = 0; j < data[i].length; j++) { points.push(new BMap.Point(data[i][j].lng, data[i][j].lat)); } this.addPolyline(BMap, map, data, points, i); } },
3)添加折線
addPolyline (BMap, map, data, points, index) { let polyline = ''; polyline = new BMap.Polyline(points, { // 創(chuàng)建折線 enableEditing: false, // 是否啟用線編輯,默認(rèn)為false // enableClicking: true, // 是否響應(yīng)點(diǎn)擊事件,默認(rèn)為true strokeColor: this.colorList[index % 8].lineColor, // 設(shè)置折線顏色 strokeWeight: 9, // 折線寬度 strokeOpacity: 1, // 折線透明度 }); map.addOverlay(polyline); // 將折線添加到地圖 for (let j = 0; j < points.length; j++) { this.addMarker(BMap, map, new BMap.Point(data[index][j].lng, data[index][j].lat), j + 1, index); } },
4)添加標(biāo)注
addMarker (BMap, map, point, number, index) { let marker = ''; let label = ''; // url: 圖標(biāo)地址, Size: 圖標(biāo)可視區(qū)域大小, anchor: 圖標(biāo)定位點(diǎn)相對于圖標(biāo)左上角的偏移值 let myIcon = new BMap.Icon(this.colorList[index % 8].icon, new BMap.Size(30, 30), { anchor: new BMap.Size(15, 15) }); myIcon.setImageSize(new BMap.Size(30, 30)); // 設(shè)置icon大小 marker = new BMap.Marker(point, { icon: myIcon }); // 創(chuàng)建圖像標(biāo)注 map.addOverlay(marker); // 將標(biāo)注添加到地圖 label = new BMap.Label(number, { offset: new BMap.Size(9, 4) }); label.setStyle({ // 設(shè)置文本標(biāo)注樣式 fontWeight: 600, fontSize: '15px', color: '#fff', backgroundColor: '0', border: 0, }); marker.setLabel(label); // 為標(biāo)注添加文本標(biāo)注 },
效果如下:
只有一個(gè)坐標(biāo)點(diǎn):
多個(gè)坐標(biāo)點(diǎn):
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
VScode中配置ESlint+Prettier詳細(xì)步驟(附圖文介紹)
這篇文章主要介紹了VScode中配置ESlint+Prettier詳細(xì)步驟,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-12-12Vue實(shí)現(xiàn)按鈕級(jí)權(quán)限方案
這篇文章主要介紹了Vue按鈕級(jí)權(quán)限方案,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11vue3中WatchEffect高級(jí)偵聽器的實(shí)現(xiàn)
本文主要介紹了vue3中WatchEffect高級(jí)偵聽器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑)
這篇文章主要介紹了vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07vue-cli+webpack項(xiàng)目打包到服務(wù)器后,ttf字體找不到的解決操作
這篇文章主要介紹了vue-cli+webpack項(xiàng)目打包到服務(wù)器后,ttf字體找不到的解決操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08使用vue.js2.0 + ElementUI開發(fā)后臺(tái)管理系統(tǒng)詳細(xì)教程(一)
這篇文章主要介紹了使用vue.js2.0 + ElementUI開發(fā)后臺(tái)管理系統(tǒng)詳細(xì)教程(一)的相關(guān)資料,需要的朋友可以參考下2017-01-01vue項(xiàng)目同時(shí)兼容pc和移動(dòng)端的解決方式
我們經(jīng)常在項(xiàng)目中會(huì)有支持pc與手機(jī)端需求,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目同時(shí)兼容pc和移動(dòng)端的解決方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10