vue 百度地图开发【教程】2. 百度地图的常用配置和操作

本文详细介绍如何在百度地图中禁用点击事件、设置中心点和缩放、使用滚轮、添加标记、文本标注和行政区划,以及创建矩形区域和获取坐标范围。通过实例演示,掌握高级地图操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

关闭地图默认的可点击功能

设置地图中心点和缩放比例

启用滚轮放大缩小地图

拖拽

移动地图

创建坐标点

添加覆盖物 —— 点

添加覆盖物 —— 文字标签

添加覆盖物 —— 行政区划 

清除覆盖物

创建矩形区域

限定地图显示范围(拖出该区域后会重新弹回)

获取百度地图的坐标范围,四个顶点坐标

更多操作参考官网



以下操作,都基于【教程】1 中绘制的百度地图  https://blog.csdn.net/weixin_41192489/article/details/113742927

<div id="myMap" style="height: 400px"></div>

关闭地图默认的可点击功能

    // 构造地图时,关闭地图默认的可点击功能
    var map = new BMap.Map("myMap", {enableMapClick:false});

默认点击地图上的景点等,会弹出景点详情,效果如下图:

设置地图中心点和缩放比例

    // 设置地图中心点和缩放比例
    map.centerAndZoom("上海",15);

启用滚轮放大缩小地图

map.enableScrollWheelZoom();

拖拽

 禁用拖拽

map.disableDragging();   

开启拖拽

map.enableDragging()

开启惯性拖拽

map.enableInertialDragging()

移动地图

map.panTo(new BMap.Point(113.262232,23.154345))

创建坐标点

new BMap.Point(113.262232,23.154345)

添加覆盖物 —— 点

var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);
var marker = new BMap.Marker(point);  // 创建标注
map.addOverlay(marker);               // 将标注添加到地图中
marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画

添加覆盖物 —— 文字标签

    var point = new BMap.Point(116.417854,39.921988);
    map.centerAndZoom(point, 15);
    var opts = {
        position : point,    // 指定文本标注所在的地理位置
        offset   : new BMap.Size(30, -30)    //设置文本偏移量
    }
    var label = new BMap.Label("欢迎使用百度地图,这是一个简单的文本标注哦~", opts);  // 创建文本标注对象
    label.setStyle({
        color : "red",
        fontSize : "12px",
        height : "20px",
        lineHeight : "20px",
        fontFamily:"微软雅黑"
    });
    map.addOverlay(label);

添加覆盖物 —— 行政区划 

data中定义map

map: null,

 mounted中创建map,调用方法

mounted() {
    // 创建地图,关闭地图默认的可点击功能
    this.map = new BMap.Map("myMap");
    //启用滚轮放大缩小地图
    this.map.enableScrollWheelZoom();
    this.drawRegion("北京市海淀区")
},

methods 中定义方法

drawRegion(regionName) {
    let that = this
    let bdary = new BMap.Boundary();
    bdary.get(regionName, function (rs) {
        //清除地图覆盖物
        that.map.clearOverlays();
        //行政区域的点有多少个
        let count = rs.boundaries.length;
        if (count === 0) {
            console.log('未能获取当前输入行政区域');
            return;
        }
        let pointArray = [];
        for (let i = 0; i < count; i++) {
            //建立多边形覆盖物
            let ply = new BMap.Polygon(rs.boundaries[i],
                {
                    // 填充的颜色
                    fillColor: "#ff0000",
                    // 填充的透明度
                    fillOpacity: 0.1,
                    // 边框粗细
                    strokeWeight: 2,
                    // 边框类型--虚线
                    strokeStyle: "dashed",
                    // 边框颜色
                    strokeColor: "#ff0000",
                });
            // 添加点击事件
            ply.addEventListener('click', function () {
                // 改变自己的透明度
                this.setFillOpacity(0.6)
            });
            that.map.addOverlay(ply);  //添加覆盖物
            pointArray = pointArray.concat(ply.getPath());
        }
        that.map.setViewport(pointArray);    //调整视野
    });
},

  点击后  

清除覆盖物

map.clearOverlays()

创建矩形区域

参数为2个点的时候,为矩形区域的左上角和右下角点

new BMap.Bounds(new BMap.Point(116.027143, 39.772348),new BMap.Point(116.832025, 40.126349))

限定地图显示范围(拖出该区域后会重新弹回)

	var b = new BMap.Bounds(new BMap.Point(116.027143, 39.772348),new BMap.Point(116.832025, 40.126349));
	try {	
		BMapLib.AreaRestriction.setBounds(map, b);
	} catch (e) {
		alert(e);
	}

获取百度地图的坐标范围,四个顶点坐标

var bounds = map.getBounds();                        //获取地图可视区域 
var sw = bounds.getSouthWest();                      //获取西南角的经纬度(左下端点)
var ne = bounds.getNorthEast();                      //获取东北角的经纬度(右上端点)
var wn = new BMap.Point(sw.lng, ne.lat);             //获取西北角的经纬度(左上端点)
var es = new BMap.Point(ne.lng, sw.lat);             //获取东南角的经纬度(右下端点)

更多操作参考官网

http://lbsyun.baidu.com/jsdemo.htm#c1_14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝阳39

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值