百度地图的使用---2、折线(Polyline)的使用、自定义样式和自适应缩放

先看效果:

再看步骤:

1、HTML

<div id="mapContainer" style={{width:"100%", height:"400px"}}/>

2、获取地图容器元素

const mapContainer = document.getElementById("mapContainer");

3、创建地图实例

const map = new BMapGL.Map("mapContainer");

4、设置中心点和缩放级别

map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 15);

5、创建Polyline组件

const polyline = new BMap.Polyline([
    new BMap.Point(116.404, 39.915),
    new BMap.Point(116.414, 39.915),
    new BMap.Point(116.424, 39.915)
]);
map.addOverlay(polyline);

效果:

6、改变折线的宽度和颜色

const points = [
      new BMapGL.Point(116.404, 39.915),
      new BMapGL.Point(116.414, 39.915),
      new BMapGL.Point(116.424, 39.915)
];
const polylineOptions = {
      strokeColor: "red", // 设置折线颜色
      strokeWeight: 3 // 设置折线宽度
};
const polyline = new BMapGL.Polyline(points, polylineOptions);
map.addOverlay(polyline);

效果:

7、扩展:实际开发中,坐标点分布可能密集,也可能分散,怎么定义缩放倍数?

首先,使用map.getViewport()方法获取一个能够包含所有标记和折线的视窗范围,

然后,使用map.setViewport()方法将地图的缩放级别和中心点自适应地设置为该视窗范围。

这样,无论标记和折线的位置如何变化,地图都会自动调整缩放级别和中心点,以确保它们都能显示在地图上。

// 自适应设置缩放级别和中心点
const viewport = map.getViewport(points);
map.setViewport(viewport);

最终效果:

8、实际开发中,还可以组合使用Marker标点和Polyline,实现更复杂的效果。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue 中使用 `el-amap` 组件库手动绘制折线,可以通过引入其中的 `AmapManager` 组件来实现。以下是一个简单的实现方法: 1. 安装 `el-amap` 组件库: ``` npm install el-amap --save ``` 2. 在 Vue 中引入 `AmapManager` 组件: ```vue <template> <el-amap class="map-container"> <el-amap-manager :plugin="plugin"></el-amap-manager> <el-button @click="drawPolyline">绘制折线</el-button> </el-amap> </template> <script> import { AmapManager } from 'el-amap'; export default { components: { AmapManager, }, data() { return { plugin: ['AMap.PolyEditor'], polyline: null, }; }, methods: { drawPolyline() { const editor = new AMap.PolyEditor(this.map, this.polyline); editor.open(); editor.on('end', () => { const path = this.polyline.getPath(); console.log('绘制完成', path); // 处理绘制结果 }); }, }, }; </script> ``` 3. 在 Vue 中创建地图实例和折线实例: ```vue <script> import { AmapManager } from 'el-amap'; export default { components: { AmapManager, }, data() { return { plugin: ['AMap.PolyEditor'], mapOptions: { center: [116.397428, 39.90923], zoom: 13, }, polylineOptions: { path: [], strokeColor: '#3366FF', strokeWeight: 5, }, polyline: null, }; }, mounted() { this.polyline = new AMap.Polyline(this.polylineOptions); this.polyline.setMap(this.$amap.getMap()); this.$amap.plugin('AMap.MouseTool', () => { const tool = new AMap.MouseTool(this.$amap.getMap()); tool.on('draw', (e) => { const path = e.obj.getPath(); console.log('绘制完成', path); // 处理绘制结果 this.polyline.setPath(path); this.polyline.setMap(this.$amap.getMap()); }); }); }, methods: { drawPolyline() { const tool = new AMap.MouseTool(this.$amap.getMap()); tool.polyline(); }, }, }; </script> ``` 以上是一个简单的实现方法,你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值