百度地图按行政区、县划分轮廓界限

本文介绍了一种在数字地图上动态划分区域并显示设备分布的方法,通过自定义覆盖物及调用百度地图API实现不同级别的区域边界展示。

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

背景

在物联网行业,用户、决策者通常需要直观地看到不同区域、地点处的设备部署情况,便于了解整体分布。通过在数字地图上动态划分各区、县的边界,同时显示每个区域的设备数量,可实现这一需求。其实,这种技术已经很成熟,并在各大找房网站中得到广泛应用。

这里列出几个参考网站,随便感受下:

基本上就是根据地图(高德、百度)的不同放大级别,分别显示不同的覆盖物;

项目需求

在百度地图上,分级,按行政区、县划分轮廓界限;

一开始拿到这一需求后,先查阅了相关资料,结果基本都指向了悟空找房,果然不错,随即确认了眼神。向各大找房网站学习~~

效果展示

2018-05-18-DistrictBoundary

总结

(1) 自定义覆盖物
主要解决了以下几个问题:

  1. 标注位置、样式;
  2. 根据放大级别显示不同的标注覆盖物;

(2) 调用百度API获取指定区域边界数据;

官方Demo

var plys = [];
var bdary = new BMap.Boundary();
bdary.get(省区县名, function (rs) {
    var count = rs.boundaries.length;
    //建立多边形覆盖物
    for (var i = 0; i < count; i++) {
        var ply = new BMap.Polygon(rs.boundaries[i], {
            strokeWeight: 2,
            strokeOpacity: 0.8,
            StrokeStyle: "solid",
            strokeColor: "#1abc9c",
            fillColor: "#16a085",
            fillOpacity: 0.2
        });
        plys.push(ply);
        map.addOverlay(ply);  //添加覆盖物
    }
});

(3) 显示、隐藏轮廓边界;

为避免重复调用接口,并多次渲染地图边界,对边界点调用show(), hide()方法,实现轮廓边界的显示与隐藏。

// 显示轮廓
for (var i = 0; i < plys.length; i++) {
    plys[i].show();
}

// 隐藏轮廓
for (var i = 0; i < plys.length; i++) {
    plys[i].hide();
}

(4) mouseover和mouseout在鼠标悬浮时多次触发;

问题的根源在子元素,一句话说明 mouseover与mouseenter 的区别:

无论鼠标穿过被选元素或其子元素,都会触发 `mouseover` 事件。
仅当鼠标穿过被选元素时,才会触发 `mouseenter` 事件。

所以将 mouseover改为mouseenter,mouseout改为mouseleave,即可达到目的。

Reference

Source Code: Github


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

### 带行政区边界的卫星地图实现方法 要获取带有行政区边界的卫星地图,可以结合多种技术数据源来完成。以下是几种常见的解决方案: #### 方法一:基于 QGIS 的矢量叠加技术 通过 QGIS 可以加载行政区边界矢量文件以及对应的卫星影像图层,并利用插件或脚本进行融合处理。具体操作可以通过 Python 脚本来调用 QGIS API 实现自动化裁剪渲染功能[^1]。 ```python from qgis.core import QgsVectorLayer, QgsRasterLayer, QgsProject # 加载行政区边界矢量图层 boundary_layer = QgsVectorLayer("path_to_boundary.shp", "Boundary Layer", "ogr") # 加载卫星影像栅格图层 satellite_image = QgsRasterLayer("path_to_satellite.tif", "Satellite Image") # 将图层添加到项目中 QgsProject.instance().addMapLayer(boundary_layer) QgsProject.instance().addMapLayer(satellite_image) # 使用虚拟覆盖方式显示边界效果 processing.run("qgis:rastercalculator", {'EXPRESSION': '"Satellite Image@1" * ("Boundary Layer")', 'LAYERS': [satellite_image], 'CELLSIZE': 0, 'EXTENT': None, 'CRS': None, 'OUTPUT': 'memory:'}) ``` 此代码片段展示了如何将矢量边界与卫星影像相结合并生成新的输出图层。 #### 方法二:借助高德地图 JS API 动态绘制 如果希望在线展示带行政区边界的卫星地图,则可考虑采用高德地图 Web 开发工具集中的 `district` 模块动态请求区域轮廓坐标点集合后,在底图为卫星视图的基础上描绘多边形图形[^2]。 ```javascript // 初始化地图实例设置为卫星模式 var map = new AMap.Map('container', { zoom: 8, center: [116.397428, 39.90923], // 默认地理中心位置 layers: [ new AMap.TileLayer.Satellite() // 添加遥感影像作为底层基础服务 ] }); AMap.plugin(['AMap.DistrictSearch'], function () { var districtSearch = new AMap.DistrictSearch({ extensions: "all" }); districtSearch.setLevelAndKeyword(5, ""); // 查询五级即乡镇级别范围内的所有子节点信息 districtSearch.search('北京市', function (status, result) { let bounds = []; if (result.districtList && result.districtList.length > 0){ const polygons = result.districtList.map(item => item.boundaries); polygons.forEach(polygon => { map.add(new AMap.Polygon({paths:polygon})); bounds.push(...polygon.flat()); }); map.setFitView(); // 自动调整视野至最佳状态以便完全展现所选目标区整体情况 } }); }); ``` 上述 JavaScript 片段说明了怎样运用高德开放平台提供的接口资源构建交互式的网页端应用案例。 #### 方法三:Three.js 构建三维场景下的中国省市级行政划分模型 对于更高级别的需求来说,《山河鉴可视化工具》提供了一个非常优秀的起点——它允许用户自定义修改全国各地方向上的地形地貌特征同时保留精确的政区界限描述[^3]。最终成果能够轻松转换成适合前端框架使用的 Vue 组件形式发布出去供他人访问体验。 ---
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Heartsuit

别说什么鼓励,这就是互联网乞讨

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

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

打赏作者

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

抵扣说明:

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

余额充值