vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发

简介: vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发

最终效果

完整代码

<template>
    <div>
        <baidu-map
                @ready="initMap"
                :zoom="12"
                center="北京市丰台区"
                style="height: 100vh;width: 100%"
                :scroll-wheel-zoom="true">
        </baidu-map>
    </div>
</template>
<script>
    export default {
        methods: {
            initMap({BMap, map}) {
                this.map = map
                let city = "北京市"
                let region = "丰台区"
                this.drawPolygon(region)
                this.addRegionLabel(city,region)
            },
            // 绘制行政区划轮廓
            drawPolygon(regionName) {
                let that = this
                let bdary = new BMap.Boundary();
                bdary.get(regionName, function (rs) {
                    //轮廓的总数 —— 有的区由多个封闭区域组成
                    let count = rs.boundaries.length;
                    if (!count) {
                        console.log('未能获取到当前输入的行政区域');
                        return;
                    }
                    for (let i = 0; i < count; i++) {
                        //创建多边形覆盖物
                        let ply = new BMap.Polygon(rs.boundaries[i],
                            {
                                strokeWeight: 2,
                                strokeColor: "red",
                                fillOpacity: 0.5,
                                strokeStyle: "dashed",
                            }
                        );
                        // 给覆盖物添加点击事件
                        ply.addEventListener('click', function () {
                            alert("我是:" + regionName)
                            // 改变自己的透明度
                            // this.setFillOpacity(0.6)
                        });
                        //添加覆盖物
                        that.map.addOverlay(ply);
                    }
                })
            },
            // 获取行政区划的坐标
            getReigonLocation(city, region) {
                return this.$http.get("/baiduMapAPI/place/v2/search", {
                    params: {
                        query: region,
                        region: city,
                        output: 'json',
                        city_limit: true,
                        ak: this.GLOBAL.baiduMapAK
                    }
                }).then(res => {
                    let location = res.data.results[0].location
                    return Promise.resolve(location);
                })
            },
            // 添加行政区划文本标注
            async addRegionLabel(city, region) {
                let point = await this.getReigonLocation(city, region)
                // 创建文本标注对象
                let label = new BMap.Label(region,
                    {
                        position: new BMap.Point(point.lng, point.lat),
                        offset: new BMap.Size(0, 0)    //设置文本偏移量
                    }
                );
                label.setStyle({
                    color: "red",
                    fontSize: "16px",
                    fontFamily: "微软雅黑",
                    background: "none",
                    border: "none",
                    fontWeight: 'bold'
                });
                // 在地图上添加文本标注对象
                this.map.addOverlay(label);
            },
        },
        data() {
            return {
                map: null
            }
        }
    }
</script>
<style scoped>
    /* 隐藏百度图片Logo */
    /deep/ .BMap_cpyCtrl {
        display: none;
    }
 
    /* 隐藏文字信息 */
    /deep/ .anchorBL {
        display: none;
    }
</style>
目录
相关文章
|
7月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
110 3
|
机器学习/深度学习 定位技术 容器
百度地图高级开发:map.getDistance计算多点之间的距离并输入矩阵
百度地图高级开发:map.getDistance计算多点之间的距离并输入矩阵
295 0
|
4月前
|
资源调度 JavaScript 定位技术
Vue2使用百度地图展示或搜索地点(vue-baidu-map)
本文介绍了如何在 Vue 项目中使用 `vue-baidu-map` 插件,包括安装、全局注册及具体应用。首先通过 `yarn add vue-baidu-map` 安装插件,并在 `main.js` 中全局注册。然后展示了如何在地图上显示特定位置的标记,以及如何搜索地点并获取其经纬度和详细地址信息。代码示例提供了详细的实现方法和样式调整。如需使用,请确保已获取百度地图 API 的密钥。
758 1
|
4月前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
|
5月前
|
JavaScript 定位技术
vue-baidu-map 百度地图检索、获取坐标
vue-baidu-map 百度地图检索、获取坐标
99 1
|
5月前
|
JavaScript 定位技术
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
442 0
|
7月前
|
JavaScript
webpack-devtool选项 --生成source-map便于开发调试(二)
webpack-devtool选项 --生成source-map便于开发调试(二)
235 0
|
7月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可为任意类型,有序且支持get、set、has、delete操作;Set存储唯一值,提供add、delete、has方法。两者皆可迭代。示例展示了Map和Set的基本用法,如添加、查询、删除元素。
40 2
|
7月前
|
存储 算法 Java
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
69 0
|
7月前
|
JavaScript 定位技术
Vue中使用百度地图demo Vue Baidu Map(vue-baidu-map)设置窗口信息
Vue中使用百度地图demo Vue Baidu Map(vue-baidu-map)设置窗口信息
524 0