vue百度地圖修改折線顏色,添加icon和文字標(biāo)注方式
vue百度地圖修改折線顏色,添加icon和文字標(biāo)注
百度地圖 折線修改顏色,添加icon和文字標(biāo)注
項(xiàng)目場(chǎng)景
以折線的形式展示BD簽到路徑,每條折線代表不同BD的簽到,并且每條折線顏色不同(這里是8個(gè)顏色,循環(huán)設(shè)置),標(biāo)注文字為依次簽到的地點(diǎn)數(shù)量;
說(shuō)明:
原本我打算全部用Vue集成的 vue-baidu-map來(lái)實(shí)現(xiàn),但是后面開(kāi)發(fā)過(guò)程中,發(fā)現(xiàn)修改折線顏色、添加icon和文字比較困難,所以改用了原生 BMap來(lái)實(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)相對(duì)于圖標(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ì)步驟,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-12-12
Vue實(shí)現(xiàn)按鈕級(jí)權(quán)限方案
這篇文章主要介紹了Vue按鈕級(jí)權(quán)限方案,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
vue3中WatchEffect高級(jí)偵聽(tīng)器的實(shí)現(xiàn)
本文主要介紹了vue3中WatchEffect高級(jí)偵聽(tīng)器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑)
這篇文章主要介紹了vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
vue-cli+webpack項(xiàng)目打包到服務(wù)器后,ttf字體找不到的解決操作
這篇文章主要介紹了vue-cli+webpack項(xiàng)目打包到服務(wù)器后,ttf字體找不到的解決操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
使用vue.js2.0 + ElementUI開(kāi)發(fā)后臺(tái)管理系統(tǒng)詳細(xì)教程(一)
這篇文章主要介紹了使用vue.js2.0 + ElementUI開(kāi)發(fā)后臺(tái)管理系統(tǒng)詳細(xì)教程(一)的相關(guān)資料,需要的朋友可以參考下2017-01-01
vue項(xiàng)目同時(shí)兼容pc和移動(dòng)端的解決方式
我們經(jīng)常在項(xiàng)目中會(huì)有支持pc與手機(jī)端需求,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目同時(shí)兼容pc和移動(dòng)端的解決方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10

