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: 
### 在 Vue 项目中集成高德地图 API 实现轨迹展示 要在 Vue 项目中实现高德地图的轨迹绘制功能,可以按照以下方法完成。以下是详细的说明: #### 准备工作 在使用高德地图 API 前,需先注册并获取个人专属的 `key`[^1]。此 key 将用于加载高德地图 JavaScript SDK。 #### 引入高德地图 JS 文件 为了能够在 Vue 项目中使用高德地图的功能,需要在项目的入口 HTML 文件(通常是位于 `public/index.html` 的文件)中引入高德地图的官方脚本库[^4]: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=你的高德Key"></script> ``` #### 创建地图实例 在 Vue 组件中初始化地图对象,并将其绑定到指定的 DOM 容器上。可以通过挂载生命周期钩子函数来执行这一操作。例如,在组件的 `mounted()` 方法中创建地图实例[^3]: ```javascript export default { data() { return { map: null, trackPath: [] }; }, mounted() { this.initMap(); }, methods: { initMap() { const container = document.getElementById('mapContainer'); this.map = new AMap.Map(container, { zoom: 12, // 设置缩放级别 center: [116.397428, 39.90923], // 初始中心点坐标 }); } } }; ``` #### 添加轨迹数据 定义一个数组存储轨迹路径上的经纬度点集合。这些点可以从服务器端接口动态拉取或者静态配置。下面是一个简单的例子,演示如何向轨迹列表添加几个位置点: ```javascript methods: { addTrackPoints() { let points = [ { lng: 116.397428, lat: 39.90923 }, { lng: 116.407428, lat: 39.91923 }, { lng: 116.417428, lat: 39.92923 } ]; points.forEach(point => { this.trackPath.push(new AMap.LngLat(point.lng, point.lat)); }); this.drawPolyline(); // 调用绘图方法 }, drawPolyline() { if (!this.map || !this.trackPath.length) return; const polyline = new AMap.Polyline({ path: this.trackPath, strokeColor: "#FF33FF", // 折线颜色 strokeWeight: 6, // 折线宽度 strokeOpacity: 0.9 // 折线透明度 }); this.map.add(polyline); // 将折线添加至地图 this.map.setFitView(); // 自动调整视野范围以适应所有标记物 } } ``` #### 动态播放轨迹动画 如果希望模拟车辆或其他物体沿预设轨迹移动的效果,则可利用定时器逐步更新图标的位置[^2]。这里提供一种基本思路: ```javascript animateMarker() { let markerIndex = 0; const totalSteps = this.trackPath.length * 10; // 总步数可以根据需求自定义 const intervalId = setInterval(() => { if (markerIndex >= totalSteps) clearInterval(intervalId); const progressRatio = Math.min(1, markerIndex / totalSteps); const currentIndex = Math.floor(progressRatio * (this.trackPath.length - 1)); const currentPoint = this.trackPath[currentIndex]; this.marker.setPosition(currentPoint); markerIndex++; }, 20); // 每隔20ms刷新一次位置 } initAnimation() { this.marker = new AMap.Marker({ position: this.trackPath[0], icon: 'http://your-icon-url.png', // 替换为实际使用的图片链接 offset: new AMap.Pixel(-13, -30), autoRotation: true }); this.animateMarker(); } ``` 以上代码片段展示了如何基于时间间隔不断改变标注的位置从而形成运动效果。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值