vue百度地图修改折线颜色,添加icon和文字标注方式

 更新时间:2024年03月19日 15:55:21   作者:茶憶  
这篇文章主要介绍了vue百度地图修改折线颜色,添加icon和文字标注方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue百度地图修改折线颜色,添加icon和文字标注

百度地图 折线修改颜色,添加icon和文字标注

项目场景

以折线的形式展示BD签到路径,每条折线代表不同BD的签到,并且每条折线颜色不同(这里是8个颜色,循环设置),标注文字为依次签到的地点数量;

说明:

原本我打算全部用Vue集成的 vue-baidu-map来实现,但是后面开发过程中,发现修改折线颜色、添加icon和文字比较困难,所以改用了原生 BMap来实现。

具体步骤

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中定义数据

1)基础数据

2)colorList:存放折线的颜色和标注icon

3)mapList:存放坐标点数据

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赋值,后面代码会用到;

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;
    // 这里是数据改变时,地图中心点定位到当前第一条数据的第一个坐标点或者默认的中心坐标
    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, { // 创建折线
        enableEditing: false, // 是否启用线编辑,默认为false
        // enableClicking: true, // 是否响应点击事件,默认为true
        strokeColor: this.colorList[index % 8].lineColor, // 设置折线颜色
        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)添加标注

addMarker (BMap, map, point, number, index) {
    let marker = '';
    let label = '';
    // url: 图标地址, Size: 图标可视区域大小, anchor: 图标定位点相对于图标左上角的偏移值
    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)); // 设置icon大小
    marker = new BMap.Marker(point, { icon: myIcon }); // 创建图像标注
    map.addOverlay(marker); // 将标注添加到地图
    label = new BMap.Label(number, { offset: new BMap.Size(9, 4) });
    label.setStyle({ // 设置文本标注样式
        fontWeight: 600,
        fontSize: '15px',
        color: '#fff',
        backgroundColor: '0',
        border: 0,
    });
    marker.setLabel(label); // 为标注添加文本标注
},

效果如下:

只有一个坐标点:

多个坐标点:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue Router添加全局$router属性的示例详解

    Vue Router添加全局$router属性的示例详解

    这篇文章主要介绍了Vue-Router-添加全局$router属性,在 Vue 中有一个 mixin 方法,这个方法会在每个组件创建之前被调用,我们可以在这个方法中将 VueRouter 实例挂载到 Vue 实例上,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 解决Vue @submit 提交后不刷新页面问题

    解决Vue @submit 提交后不刷新页面问题

    这篇文章主要介绍了解决Vue @submit 提交后不刷新页面问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue element项目引入icon图标的方法

    vue element项目引入icon图标的方法

    这篇文章主要介绍了vue element项目引入icon图标的方法,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • 一篇文章带你搞懂VUE基础知识

    一篇文章带你搞懂VUE基础知识

    这篇文章主要介绍了vue 组件基础知识的相关资料,帮助大家更好的理解和使用vue的组件,感兴趣的朋友可以了解下
    2021-11-11
  • vue实现全局组件自动注册,无需再单独引用

    vue实现全局组件自动注册,无需再单独引用

    这篇文章主要介绍了vue实现全局组件自动注册,无需再单独引用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • vue实现微信分享功能

    vue实现微信分享功能

    这篇文章主要介为大家详细绍了vue实现微信分享功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • VsCode新建VueJs项目的详细步骤

    VsCode新建VueJs项目的详细步骤

    本篇文章主要介绍了VsCode新建VueJs项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 详解在vue-cli中使用路由

    详解在vue-cli中使用路由

    本篇文章主要介绍了详解在vue-cli中使用路由,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 详解vue-router数据加载与缓存使用总结

    详解vue-router数据加载与缓存使用总结

    这篇文章主要介绍了详解vue-router数据加载与缓存使用总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 关于vue中ref的使用(this.$refs获取为undefined)

    关于vue中ref的使用(this.$refs获取为undefined)

    这篇文章主要介绍了关于vue中ref的使用(this.$refs获取为undefined),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论