基于Leaflet的Webgis经纬网格生成实践

news2024/11/22 15:28:42

目录

前言

一、Leaflet.Graticule

1、参数说明

二、集成使用

1、新建网页模板

2、初始化地图对象

3、运行效果

三、源码调用分析

1、参数注入

 2、经纬网构建

总结 


前言

        众所周知,在地球仪上或地图上,经线和纬线相互交织,就构成经纬网。利用它上面标注的经度和纬度,可以确定地球表面上各地点、各地区和各种地理现象的地理位置。它在军事、航空、航海等方面很有用处。例如,轮船在茫茫大海上航行,飞机在广阔天空中飞翔,无论到了什么地方,人们都可以使用仪器精确地测定出它的经纬度,从而确定其位置。

        为了精确地表明各地在地球上的位置,人们给地球表面假设了一个坐标系,这就是经纬线。公元344年,亚历山大渡海南侵,继而东征,随军地理学家尼尔库斯沿途搜索资料,准备绘一幅“世界地图”。他发现沿着亚历山大东征的路线,由西向东,无论季节变换与日照长短都很相仿。于是做出了一个重要贡献——第一次在地球上划出了一条纬线,这条线从直布罗陀海峡起,沿着托鲁斯和喜马拉雅山脉一直到太平洋。
  公元120年,一位青年也在这座古老的图书馆里研究天文学、地理学。他就是克罗狄斯·托勒密。托勒密综合前人的研究成果,认为绘制地图应根据已知经纬度的定点做根据,提出地图上绘制经纬度线网的概念。为此,托勒密测量了地中海一带重要城市和据点的经纬度,编写了8卷地理学著作。其中包括8000个地方的经纬度。为使地球上的经纬线能在平面上描绘出来,他设法把经纬线绘成简单的扇形,从而绘制出一幅著名的“托勒密地图”。
  在很多的场景中,需要在地图中直观的展示经纬网,方便进行位置定位。比如在地震信息系统中,会在震中区域范围进行展示。如下图:

        在之前的博客中,介绍了很多Leaflet的插件,可以利用Leaflet进行webgis系统开发。本文将介绍一款Leaflet的经纬网插件,基于这款经纬网插件,介绍如何实现经纬网功能,clone的Leaflet.Graticule地址。 在CSDN社区中,有一些博主做了比较简单的介绍,有一些是自己实现的。感兴趣的朋友可以去下载相关代码和资料来看看。

一、Leaflet.Graticule

        由于gitHub现在有一些不稳定,可以在gitee上看到有网友clone过来的版本,可以看看最新克隆过来的,与原来的github代码是保持同步更新的。

1、参数说明

        Leaflet.Graticule的参数配置是比较简单的,下面来简单介绍一下配置参数。

序号参数名称说明默认值
1showLable在地图边缘显示网格记号标签true
2opacity光栅和标签的不透明度1
3weight网格线的宽度0.8
4color网格线的颜色#aaa
5font刻度标签的字体样式12px Verdana
6fontColor刻度标签的颜色#aaa
7zoomInterval刻度标签的颜色在不同的缩放级别中使用不同的间隔。例如,您可以设置纬度和经度线,也可以设置不同的纬度和经度间隔,如下所示:zoomInterval: []

        注意:zoomInterval的参数默认如下:

  zoomInterval: [
    {start: 2, end: 2, interval: 40},
    {start: 3, end: 3, interval: 20},
    {start: 4, end: 4, interval: 10},
    {start: 5, end: 7, interval: 5},
    {start: 8, end: 20, interval: 1}
  ]

         当然,如果您需要针对经纬度来进行精准的控制,也是可以按照经纬度来自定义的。配置参数如下:

  zoomInterval: {
    latitude: [
      {start: 4, end: 6, interval: 5},
      {start: 7, end: 20, interval: 1}
    ],
    longitude: [
      {start: 4, end: 6, interval: 10},
      {start: 7, end: 20, interval: 2}
    ]
  }

二、集成使用

1、新建网页模板

<!doctype html>
<html lang="en">
<head>
	<title>Leaflet Lat/Lon Graticule 经纬网演示</title>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<link href="/2d/leaflet/leaflet.css" rel="stylesheet" type="text/css" />
<script src="/2d/leaflet/leaflet-src.js"></script>

<script src="../Leaflet.Graticule.js"></script>

	<style>
		html { height: 100%; }
		body { height: 100%; margin: 0; padding: 0;}
		.map { width: 100%; height: 600px; }
	</style>
</head>
<body>
	<div id="map" class="map"></div>
</body>
</html>

        请注意在代码中需要引入经纬网js资源文件

<script src="../Leaflet.Graticule.js"></script>

2、初始化地图对象

<script>
		var map = new L.Map('map',{zoomControl:false}).setView([24.0, 121], 6),
		stamenTerrain = L.tileLayer('http://localhost:8086/data/xxgc/q0403/{z}/{x}/{y}.png').addTo(map);
		//添加格网
		L.latlngGraticule({
			showLabel: true,
			color: 'red',
			zoomInterval: {
				latitude: [
				  {start: 2, end: 4, interval: 30},
				  {start: 5, end: 20, interval: 5}
				],
				longitude: [
				  {start: 2, end: 4, interval: 30},
				  {start: 5, end: 20, interval: 5}
				]
			  }
		}).addTo(map);
	</script>

3、运行效果

        以上效果基本满足我们的初始需求,可以在地图上进行经纬度的渲染展示。 

三、源码调用分析

1、参数注入

L.latlngGraticule({
			showLabel: true,
			color: 'red',
			zoomInterval: {
				latitude: [
				  {start: 2, end: 4, interval: 30},
				  {start: 5, end: 20, interval: 5}
				],
				longitude: [
				  {start: 2, end: 4, interval: 30},
				  {start: 5, end: 20, interval: 5}
				]
			  }
		}).addTo(map);

 2、经纬网构建

总结 

        以上就是本文的主要内容,本文将介绍一款Leaflet的经纬网插件,基于这款经纬网插件,详细介绍如何实现经纬网功能。行文仓促,如有不当之处,欢迎批评指正。

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

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

相关文章

复旦微固化流程

生成boot.bin 如图所示&#xff0c;psoc下的create boot image&#xff0c;选择文件配置路径output bif&#xff0c;任意命名 点击右侧add&#xff0c;分别添加三部分 1.编译FSBL工程后SDK\system_platform\FSBL\Debug\Exe路径下的FSBL.out 2.PL侧的bit文件 3.编译工程后SDK\sy…

关于对RF射频方面性能要求各有不同

1.1 射频天线性能 对于一个射频设备每个公司对其合格指标要求都不一&#xff0c;有些公司注重于阻抗及电压驻波&#xff0c;有些公司注重与回波损耗及阻抗、有些只关注电压驻波。 1.2 射频的目的 其实射频天线的目的就是在不把无用的杂散放大超标准的前提下&#xff0c;把有用…

穿梭时光的Java魔法:轻松掌握Date类,揭示当前时间的神秘面纱!

一、实现目标 获取当前时间&#xff01; 二、上代码 import java.text.SimpleDateFormat; import java.util.Date; public class Date_ { // 输出当前的时间 public static void main(String[] arg…

项目总结-自主HTTP实现

终于是写完了&#xff0c;花费了2周时间&#xff0c;一点一点看&#xff0c;还没有扩展&#xff0c;但是基本功能是已经实现了。利用的是Tcp为网络链接&#xff0c;在其上面又写了http的壳。没有使用epoll&#xff0c;多路转接难度比较高&#xff0c;以后有机会再写&#xff0c…

大数据技术8:StarRocks极速全场景MPP数据库

前言&#xff1a;StarRocks原名DorisDB&#xff0c;是新一代极速全场景MPP数据库。StarRocks 是 Apache Doris 的 Fork 版本。StarRocks 连接的多种源。一是通过这个 CDC 或者说通过这个 ETL 的方式去灌到这个 StarRocks 里面&#xff1b;二是还可以去直接的和这些老的 kafka 或…

图的导航-最短路径算法-深度优先遍历

介绍 最短路径&#xff1a;从起点开始访问所有的路径&#xff0c;到达终点的路径有多条&#xff0c;其中路径的权值最短的一条则为最短路径。 最短路径算法有深度优先遍历、广度优先遍历、Bellman-Ford算法、弗洛伊德算法、SPFA算法、迪杰斯特拉算法等。 而本篇讲的是利用深…

TypeScript中的基本类型

提示&#xff1a;TypeScript中的基本类型 文章目录 前言基本类型1.类型声明2.自动类型判断3.类型断言 前言 TypeScript &#xff08;计算机编程语言&#xff09;简称&#xff1a;TS&#xff0c;是 JavaScript 的超集。简单来说就是&#xff1a;JS 有的 TS 都有。JS写的代码在TS…

基于ssm民宿管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本民宿管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

H5 - - - - 移动端禁止长按保存图片

H5 - - - - 移动端禁止长按保存图片 1. 问题描述2. 解决办法2.1 img标签添加css属性2.2 设置为背景图片2.3 图片元素的同级加一个透明盒子 1. 问题描述 H5移动端 img标签长按&#xff0c;会出现如图效果⬇️ 那么该如何修改&#xff0c;能避免长按保存图片操作呢&#xff1f; …

代码随想Day36 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 这道题和前一天的射箭题目思想类似&#xff0c;用总区间个数-不重叠的区间个数等于需要去除的区间个数。首先对左边界排序&#xff0c;如果当前的左边界大于等于上一区间的右边界&#xff0c;则说明是一个不重叠的区间&#xff0c;否则&#xff0c;更新上一重…

Microsoft 发布了 12 月份产品安全问题修复报告。

&#x1f525; Microsoft 发布了 12 月份产品安全问题修复报告。 请注意趋势漏洞 CVE-2023-36011 和 CVE-2023-35632。这些漏洞与 Win32k 内核和负责网络通信的辅助功能驱动程序 (AFD) 驱动程序中的缺陷有关。成功利用这两个漏洞可让进入 Windows 系统的攻击者将其权限提升至系…

NXP应用随记(二):S32K3xx内存随记

目录 1、TCM 1.1、代码放置在ITCM的方式 __attribute__ 的函数属性 __attribute__ 的变量属性 __attribute__ 的类型属性 __attribute__ 的优化控制属性 1.2、DTCM 1.3、TCM的使用注意事项 1、TCM CMTightly Coupled Memory&#xff0c;是一种高速缓存&#xff0c;据说是…

【EI会议征稿】第三届电力系统与电力工程国际学术会议(PSPE 2024)

第三届电力系统与电力工程国际学术会议&#xff08;PSPE 2024&#xff09; 2024 3rd International Conference on Power System and Power Engineering(PSPE 2024) 第三届电力系统与电力工程国际学术会议&#xff08;PSPE 2024&#xff09;于2024年3月29-31日在中国三亚隆重召…

开发案例:使用canvas实现图表系列之折线图

一、功能结构 实现一个公共组件的时候&#xff0c;首先分析一下大概的实现结构以及开发思路&#xff0c;方便我们少走弯路&#xff0c;也可以使组件更加容易拓展&#xff0c;维护性更强。然后我会把功能逐个拆开来讲&#xff0c;这样大家才能学习到更详细的内容。下面简单阐述…

C++怎么快速提升实力?

C怎么快速提升实力&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「C的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&…

redis-学习笔记(Jedis hash简单命令)

hset & hget 往 hash 里面塞数据和获取数据 示例代码 hmset & hmget 批量插入数据, 获取数据 注意, hmset 里面插入的是一个 Map hmget 的返回值是一个一个 List 列表 (参数仍是变长参数) 示例代码 hexists 判断 hash 中 域值 存不存在 示例代码 hdel 删除指定的域和值…

SpringBoot 引入nacos 【最新 | 可运行】

SpringBoot 引入nacos 首先要了解在 Springboot 中只支持那些 Springboot 的版本&#xff08;我真的被这个搞死了&#xff09;,可以如下图参考&#xff1a; 下面我们就开始吧 下载 Nacos nacos 下载地址&#xff0c;这里可以选择你要下载的版本&#xff0c;我选择下载了2.2.…

基于Java8构建Docke镜像

基于Java8构建Docke镜像 搜索java8安装包 docker search java8 --no-trunc &#xff0c; --no-trunc展开描述信息 选择拉取 docker pull docker.io/mykro/java8-jre&#xff0c;为了减少磁盘占用&#xff0c;选择jre版本基础镜像 在宿主机创建文件夹iot&#xff0c;并把所需…

【FPGA/verilog -入门学习4】verilog 实现多路脉冲计数

需求&#xff1a; 设计一个脉冲计数器&#xff0c;其功能如下 输入脉冲&#xff1a;4路脉冲信号&#xff0c;分别对每路进行脉冲检测并计数 使能信号&#xff1a;高电平进行计数&#xff0c;低电平清零计数器 计数器&#xff1a;在使能信号高电平期间&#xff0c;对脉冲信号…

Kubernetes版本升级到v1.18.0方法

升级k8s版本才能使用kube-prometheus安装监控 1、查看集群状态 [rootk8s-master k8s-script]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 5d22h v1.18.0 k8s-slave1 Ready <none> 4d10h v1.18.0 k…