获取全国各地行政区的genjson数据以及使用leaflet加载行政区数据

news2024/12/25 9:07:57

前言

在写代码之前,我们需要做一些准备工作,需要有一份某个行政区的geojson数据,如果你没有也没关系,我们可以去下载,地址:geojson数据下载网站

打开网站,选择自己想要获取的行政区,我这里以南宁为例。我们有两种方式获取数据,第一种直接复制链接地址,在线引入geojson数据。第二种,点击下载按钮,将数据以json文件的形式保存到本地,从本地引入数据。
在这里插入图片描述

我这里以第二种方法来演示。

一、简单加载行政区数据

首先创建一个地图对象,将地图的中心点设置成在我们的行政区内,否则加载完成之后看不到效果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../leaflet/leaflet.css">
    <script src="../leaflet/leaflet.js"></script>
    <script src="../js/jquery.js"></script>
</head>
<style>
    #map {
        position: absolute;
        width: 100%;
        height: 100vh;
        left: 0;
        top: 0;
    }
</style>
<body>
<div id="map"></div>
</body>
<script>
    const map = L.map("map",{
        center: [22.82261, 108.37345],  //[纬度,经度]
        zoom: 8,  //默认缩放等级
        crs: L.CRS.EPSG4326  //wgs84坐标系的代码
    });
</script>
</html>

引入jquery.js文件加载json数据,通过L.geoJson方法加载南宁市的行政区数据。

//读取geojson数据
    $.getJSON('./南宁市.json', function (data) {
        const xzqLayer = L.geoJson(data);
        xzqLayer.addTo(map);
    })

效果如下:
在这里插入图片描述

二、定制行政区样式

在使用L.geoJson方法加载行政区时,可以设置他的option属性,自定义我们的地图样式。

const map = L.map("map",{
        center: [22.82261, 108.37345],  //[纬度,经度]
        zoom: 8,  //默认缩放等级
        crs: L.CRS.EPSG4326  //wgs84坐标系的代码
    });
    //读取geojson数据
    $.getJSON('./南宁市.json', function (data) {
        const xzqLayer = L.geoJson(data, {
            fillColor: '#000',  //填充颜色
            color: '#3ef4c8',  //边线颜色
            fillOpacity: 1   //透明度
        });
        xzqLayer.addTo(map);
    })

效果如下:
在这里插入图片描述

更多的样式设置请参考官方文档:官方文档

三、地图在浏览器中自动居中

如果通过设置map的中心点的位置来实现地图在浏览器中居中的话,将会十分困难,我们这里通过两句代码来实现地图自动居中。

//地图在浏览器中自动居中
const bound = xzqLayer.getBounds();
map.fitBounds(bound);

四、添加城市名称的标签

我们通过L.geonJson的属性onEachFeature来自定义一个回调函数setLabel,用来显示城市名标签,函数的参数是地图的每一个区域的genjson值,即图斑。

L.marker的第一个参数是标签要显示的位置,是经纬度值,注意纬度在前经度在后,所以我们要反转一下获取到的genjson中的中心。

//读取geojson数据
$.getJSON('./南宁市.json', function (data) {
    const xzqLayer = L.geoJson(data, {
        fillColor: '#fff',  //填充颜色
        color: '#3ef4c8',  //边线颜色
        fillOpacity: 1,   //透明度
        onEachFeature: setLabel  //回调函数
    });
    xzqLayer.addTo(map);

    //地图在浏览器中自动居中
    const bound = xzqLayer.getBounds();
    map.fitBounds(bound);

    //设置城市标签的回调函数
    function setLabel (e){
        //将标签定义为icon的样式显示
        const icon = L.divIcon({
            className: "test",
            html: "<div>" + e.properties.name + "</div>"
        });
        //(标签显示的位置, 要显示的标签)
        L.marker(e.properties.center.reverse(), {icon: icon}).addTo(map);
    }
});

效果如图:
在这里插入图片描述

因为我们下载的genjson数据的中心位置有问题,所以标签显示不整齐,想要显示整齐的话,自己去geojson中调整经纬度即可。

还可以直接在div标签中调整css样式。

//设置城市标签的回调函数
function setLabel (e){
    //将标签定义为icon的样式显示
    const icon = L.divIcon({
        className: "test",
        html: "<div style='width: 200px;color: #222222'>" + e.properties.name + "</div>"
    });
    //(标签显示的位置, 要显示的标签)
    L.marker(e.properties.center.reverse(), {icon: icon}).addTo(map);
}

效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/745850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA学习——按键控制LED流水灯(附源码 无按键消抖版本)

文章目录 一、前言二、开发板按键原理图三、源码四、实现效果 一、前言 在博主的cyclone4开发板上一共有4个按键&#xff0c;本次实验的目的是为了实现每按下一次按键&#xff0c;都会使开发板上的4个LED灯切换一次状态&#xff0c;博主一共设计了四种状态&#xff0c;分别是&…

滴水逆向三期笔记与作业——02C语言——04 IF语句逆向分析下

OneNote防丢失。 海哥牛逼。 目录 一、if…else...反汇编1、反汇编特点2、案例分析 二、作业1三、IF...ELSE IF...ELSE IF..多分支语句1、多分支反汇编2、案例分析 四、作业2 一、if…else…反汇编 1、反汇编特点 2、案例分析 二、作业1 解&#xff1a; 分析图&#xff1a; 分…

【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

前端开发中常见的20个数组方法,你掌握了几个?

文章目录 前言一、常见的数组方法1.1 push (将指定的元素添加到数组的末尾&#xff0c;并返回新的数组长度)1.2 pop (从数组中删除最后一个元素&#xff0c;并返回该元素的值)1.3 shift (从数组中删除第一个元素&#xff0c;并返回该元素的值)1.4 unshift (向数组首位添加一个或…

路径规划算法:基于鹈鹕优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于鹈鹕优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于鹈鹕优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法鹈鹕…

VirtualBox单机版安装K8S+TF

本文参考自&#xff1a;kubernetes最新版安装单机版v1.21.5_kubernetes下载_qq759035366的博客-CSDN博客 只用一台VB虚拟机&#xff0c;装K8S加Tungsten Fabric。 0. 提前避坑&#xff1a; 0.1 Tungsten Fabric的VRouter对Linux内核版本有要求&#xff0c;以下内核版本才…

音视频——码率、帧率越高越清晰?分辨率、像素、dpi的关系

一 前言 本期我介绍一下视频的一些基础概念&#xff0c;如帧率、码率、分辨率、像素、dpi、视频帧、I帧、P帧、gop等。我i初步学习音视频&#xff0c;给这些专业词汇进行扫盲 会解释多少码率是清晰的&#xff0c;是否帧率越高越流畅等问题。 这些概念是比较杂乱的&#xff0c…

微信二维码登录,修改下面提示的字体和样式

背景 由于业务需要&#xff0c;需要把微信二维码下面默认的提示文字进行修改&#xff0c;如下图所示&#xff1a; 需要修改上面红色框内选择的字体&#xff0c;在研究的过程中&#xff0c;发现好多人都在查询这个问题&#xff0c;并且有些网友思路也是对的。可能只是方式没对。…

库存扣减设计和下单

这里写目录标题 前言正文库存设计原则常见库存扣减方案秒杀订单域设计整体服务领域模型领域服务领域事件之下单下单整体流程同步下单库存预扣减库存扣减 总结参考链接 前言 大家好&#xff0c;我是练习两年半的Java练习生&#xff0c;前面我们已经介绍了领域驱动和缓存设计&am…

路径规划算法:基于金豺优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于金豺优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于金豺优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法金豺…

【网络编程】应用层协议——HTTPS协议(数据的加密与解密)

文章目录 一、HTTP协议的缺陷二、HTTPS协议的介绍三、加密与解密3.1 加密与解密流程3.2 为什么要加密和解密3.3 常见的加密方式3.3.1 对称加密3.3.2 非对称加密3.3.3 数据摘要&#xff08;数据指纹&#xff09;3.3.4 数据签名 四、HTTPS工作过程4.1 中间人攻击方式4.2 数字证书…

50行PyTorch代码中的生成对抗网络(GAN)

一、说明 2014年,蒙特利尔大学的伊恩古德费罗(Ian Goodfellow)和他的同事发表了一篇令人惊叹的论文,向世界介绍了GANs或生成对抗网络。通过计算图和博弈论的创新组合,他们表明,如果有足够的建模能力,相互竞争的两个模型将能够通过普通的旧反向传播进行共同训练。 二、原…

大学啥也没有学到,跑到培训班里学技术,真的有用吗-以下来自一位认识的朋友投稿-王大师

在学习IT技术的过程中&#xff0c;你是否也被安利过各种五花八门的技术培训班&#xff1f;这些培训班都是怎样向你宣传的&#xff0c;你又对此抱有着怎样的态度呢&#xff1f;在培训班里学技术&#xff0c;真的有用吗&#xff1f;–王大师告诉你 1、掌握 JAVA入门到进阶知识(持…

极验滑块(3代)验证码细节避坑总结

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 关于 w 值…

惊!这道题正确率竟然只有 22%:答案详解

《Go 语言爱好者周刊》第 148 期有一道题目&#xff1a;以下代码输出什么&#xff1f; package mainimport ("fmt" )func main() {m : [...]int{a: 1,b: 2,c: 3,}m[a] 3fmt.Println(len(m)) }A&#xff1a;3&#xff1b;B&#xff1a;4&#xff1b;C&#xff1a;10…

面试官:过滤器和拦截器有什么区别?

过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;都是基于 AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;思想实现的&#xff0c;用来解决项目中某一类问题的两种“工具”&#xff0c;但二者有着明显的差…

AI原生云向量数据库Zilliz Cloud创建备份快照

目录 创建快照 调整快照保留天数 相关文档 快照是为某个集群在指定时间点创建的备份。您可以基于快照创建新的集群或将快照用作集群数据备份。 说明 快照功能目前仅对签约用户开放。如需使用该功能,请联系我们。 创建快照 快照创建是异步操作,创建所需时间取决于集群大…

Python爬虫学习笔记(一)————网页基础

目录 1.网页的组成 2.HTML &#xff08;1&#xff09;标签 &#xff08;2&#xff09;比较重要且常用的标签&#xff1a; ①列表标签 ②超链接标签 &#xff08;a标签&#xff09; ③img标签&#xff1a;用于渲染&#xff0c;图片资源的标签 ④div标签和span标签 &…

LabVIEW开发BROOKS SLA5850 BROOKS 0251

LabVIEW开发BROOKS SLA5850 BROOKS 0251 SLA5800 系列热式质量流量计和质量流量控制器在精度、稳定性和可靠性方面堪称标杆&#xff0c;因而得到广泛的认可。这些产品具有广泛的流量测量范围&#xff0c;适用于各种温度和压力条件&#xff0c;非常适合化工和石化研究、实验室、…

【Gradle】实现自动化构建和测试,提高代码质量和可靠性

做Android开发的同学&#xff0c;对Gradle肯定不陌生&#xff0c;我们用它配置、构建工程&#xff0c;可能还会开发插件来促进我们的开发&#xff0c;我们必须了解Gradle。Gradle是一种基于Groovy的项目自动化构建工具&#xff0c;用于编译、打包、测试、发布和依赖管理等任务。…