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>
目录
相关文章
|
1月前
|
存储 分布式计算 Java
Stream很好,Map很酷,但答应我别用toMap():Java开发中的高效集合操作
在Java的世界里,Stream API和Map集合无疑是两大强大的工具,它们极大地简化了数据处理和集合操作的复杂度。然而,在享受这些便利的同时,我们也应当警惕一些潜在的陷阱,尤其是当Stream与Map结合使用时。本文将深入探讨Stream与Map的优雅用法,并特别指出在使用toMap()方法时需要注意的问题,旨在帮助大家在工作中更高效、更安全地使用这些技术。
38 0
|
3月前
|
资源调度 JavaScript 定位技术
Vue2使用百度地图展示或搜索地点(vue-baidu-map)
本文介绍了如何在 Vue 项目中使用 `vue-baidu-map` 插件,包括安装、全局注册及具体应用。首先通过 `yarn add vue-baidu-map` 安装插件,并在 `main.js` 中全局注册。然后展示了如何在地图上显示特定位置的标记,以及如何搜索地点并获取其经纬度和详细地址信息。代码示例提供了详细的实现方法和样式调整。如需使用,请确保已获取百度地图 API 的密钥。
491 1
|
3月前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
|
4月前
|
定位技术 开发者
百度地图开发 —— 获取百度地图开发的 AK
百度地图开发 —— 获取百度地图开发的 AK
321 3
|
4月前
|
JavaScript 前端开发 定位技术
vue 使用 vue-jsonp 解决跨域请求问题(访问百度地图API)
vue 使用 vue-jsonp 解决跨域请求问题(访问百度地图API)
242 0
|
4月前
|
JavaScript 定位技术
vue 百度地图开发【教程】3. 自定义百度地图主题
vue 百度地图开发【教程】3. 自定义百度地图主题
158 0
|
4月前
|
JavaScript 定位技术
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
401 0
|
6月前
|
存储 Kubernetes 容器
百度搜索:蓝易云【Kubernetes使用helm部署NFS Provisioner】
现在,你已经成功使用Helm部署了NFS Provisioner,并且可以在Kubernetes中创建使用NFS存储的PersistentVolumeClaim。
204 10
|
6月前
百度搜索:蓝易云【什么是HTTP长轮询?】
现在,HTTP长轮询逐渐被WebSocket等更高效的实时通信技术所替代,但了解HTTP长轮询仍然有助于理解实时数据推送的基本原理。
128 9
|
6月前
|
移动开发 Shell Linux
百度搜索:蓝易云【Shell错误:/bin/bash^M: bad interpreter: No such file or directory】
将 `your_script.sh`替换为你的脚本文件名。运行此命令后,脚本文件的换行符将被转换为Linux格式,然后就可以在Linux系统上正常执行脚本了。
74 8