GIS前端-地图操作与交互

2023-09-14 11:57:06

常用的基础功能通常是一个应用系统所必需的,如地图的缩放、导航、定位、弹出框等,它让一张静态的地图动起来,让地图承载更多的空间信息,并以友好的交互方式呈现给用户。例如,一个大众应用的旅游GIS系统,如果仅仅在Web端显示一张地图,那么这时只能看到一张静止的图片,用户无法提取更多的有用信息,没有太大的实用价值。如果在此基础上实现地图缩放控制、提供常用的测量等工具,并基于地图提供交通、饮食、住宿等一系列旅行信息的定位功能,同时实现兴趣点标注、导出图片等交互功能,才能使该旅游GIS系统富有生命力,能够为用户提供更多、更友好的地图服务。

地图操作与交互基本原理

在地图上的一切操作均要采用地图事件机制来实现,即通过鼠标的交互,使用地图相关事件触发回调函数,调用功能接口函数实现具体GIS功能。Leaflet作为新兴的前端开发框架,虽然设计简单,但拥有丰富的地图事件。Leaflet开发库的核心部分是在页面中创建地图并操纵地图,其框架如图
在这里插入图片描述

Leaflet提供的事件

包括浏览器事件和自定义的地图事件,主要由Handler类实现。浏览器事件为常用的鼠标事件,绑定到相应的DOM节点;地图事件即addLayer、addControl等,与Layer、Map等与地图相关的对象关联。在实现地图操作及地图相关功能时(如地图缩放操作与绘图、查询等WebGIS功能),通常需要添加事件监听,在事件处理方法中执行相关的功能函数。

在WebGIS二次开发中,涉及地图事件应用时,逻辑坐标与窗口坐标的转换也是一个非常关键的步骤。逻辑坐标是指地理坐标,表示真实的地理空间位置;窗口坐标是指网页中地图逻辑坐标对应的屏幕坐标,它是根据网页中地图容器布局(大小与位置),将地图逻辑坐标转换得到的。

例如,一个常见的矩形查询,需要使用鼠标在地图上绘制一个矩形,查询矩形范围内的空间要素。在实现矩形查询功能时,首先设置鼠标操作状态为矩形绘制状态;然后添加一个地图事件的监听,即添加矩形绘制鼠标弹起的事件监听,在监听事件的处理函数中获取绘制矩形的窗口坐标,将其转换为地图逻辑坐标;最后把得到的地图逻辑坐标范围作为查询条件,查询矩形范围内的空间要素。

缩放控件

放控件的主要功能是实现地图的放大和缩小操作,单击缩放控件上的加号按钮实现放大操作,单击缩放控件上的减号按钮实现缩小操作。Leaflet开发库提供的缩放控件为L.Control.Zoom,基于Leaflet开发库调用地图,地图左上角会默认显示一个缩放控件。如果想要隐藏缩放控件,则在Map容器中增加属性设置zoomControl: false即可。
本实例在天地图地图的基础上,加载Leaflet开发库中的缩放控件,主要实现步骤如下。
(1)新建一个HTML页面,加载一幅天地图地图作为底图。
(2)在加载地图的init()函数中,初始化zoomControl控件,并通过Map的addControl()方法将其加载到地图容器中。
代码如下:
在这里插入图片描述
本实例介绍的缩放控件是Leaflet封装好的功能,我们可以直接调用。但是在应用和开发时,有时需要根据实际情况对功能进行调整,那么如何实现自定义的缩放控件呢?根据对Leaflet脚本库的学习,我们发现缩放控件的实现就是对L.Control.Zoom各种参数的设置和实现,下面介绍自定义缩放控件的实例。
代码如下:
在这里插入图片描述

更多推荐

细说 Spring Cloud Gateway

1.SpringCloudGateway简介与核心概念在微服务架构中,API网关是一个非常重要的组件,它可以帮助我们实现服务的路由、负载均衡、认证授权等功能。SpringCloudGateway是SpringCloud官方推出的一个基于Spring5、SpringBoot2和ProjectReactor的API网关实现

Linux centOS yum install MySQL5.7

下载并安装MySQLYUM仓库wgethttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudoyumlocalinstallmysql57-community-release-el7-11.noarch.rpm这将为您的CentO

PKE 安全性的提升方式:Naor-Yung、Fischlin、Fujisaki-Okamoto

参考文献;[NY90]NaorM,YungM.Public-keycryptosystemsprovablysecureagainstchosenciphertextattacks[C]//Proceedingsofthetwenty-secondannualACMsymposiumonTheoryofcomputin

深入解析Perlin Simplex噪声函数:在C++中构建现代、高效、免费的3D图形背景

引言在计算机图形中,噪声是一个经常被讨论的话题。无论是为了制造自然的纹理,还是为了模拟复杂的现实世界现象,噪声函数都在其中起着关键作用。而在众多噪声函数中,PerlinSimplex噪声无疑是最受欢迎的一种。其原因不仅在于其干净、快速的特性,更因为其所提供的连续性和一致性非常适合图形渲染。本文将为你展示如何在C++中实

8路光栅尺磁栅尺编码器或16路高速DI脉冲信号转Modbus TCP网络模块 YL99-RJ45

特点:●光栅尺磁栅尺解码转换成标准ModbusTCP协议●高速光栅尺磁栅尺4倍频计数,频率可达5MHz●模块可以输出5V的电源给光栅尺或传感器供电●支持8个光栅尺同时计数,可识别正反转●可以设置作为16路独立DI高速计数器●可网页直接查看所有数据无需其他软件●编码器计数值和DI计数都支持断电自动保存●DI输入和网络通信

每天几道Java面试题:集合(第四天)

目录第四幕、第一场)大厦楼下门口第二场)大门口友情提醒背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。第四幕、第一场)大厦楼下门口【面试者老王,门卫甲,门卫乙,面试者奥斯卡】门卫甲:天下熙熙皆为利来,天下攘攘皆为利往,像门卫乙和我这样不为名利专心看门,世界上又有多少人呢?

蓝牙资讯|苹果新款AirPods Pro支持Vision Pro无损音频和IP54防水防尘

苹果公司宣称,USB-C能够带来更多灵活性,现在用户可以使用手机的USB-C接口,为AirPodsPro耳机盒充电。虽然苹果没有详细介绍这款耳机,但在今天的新闻稿中依然透露了一些不一样的地方,例如新款AirPodsPro2升级到了IP54级别(原版不防尘,仅IPX4级抗水),可陪伴用户在恶劣的环境中展开冒险。除此之外,

如何用Java+SpringBoot+Vue构建一个靓车汽车销售网站?

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

阿里云通义千问大模型正式开放;玩10次ChatGPT就要消耗1升水

🦉AI新闻🚀阿里云通义千问大模型正式开放,已有超20万企业申请接入测试摘要:阿里云通义千问大模型已经通过备案并向公众开放。用户可以登录官网体验,企业用户可以通过阿里云调用API。阿里云通义千问在一个月的邀测中,就有超过20万企业和机构用户申请接入测试,并与OPPO、得物、钉钉、淘宝、浙江大学等合作。此外,阿里云还开

汇编基础(1)--ARM32

简介ARM32,也称为ARMArchitecturev7,是一种32位的指令集架构(ISA),由ARM公司开发并广泛应用于嵌入式系统和移动设备。ARM32是ARM体系结构中较早的版本,被许多处理器核使用,包括Cortex-A、Cortex-R和Cortex-M系列。ARM32架构的主要特点如下:精简指令集:ARM32使

ArmSom-W3开发板之PCIE的开发指南(二)

一、前言上一篇RK3588平台驱动调试篇[PCIE篇]-PCIE的开发指南(一)已经介绍过如何在3588上使用pcie的资源,这一篇介绍在Linux系统下如何应用pcie接上的设备二、PCI配置空间一个PCIe系统最多有256条Bus,每条Bus上最多挂32个Device,每个Device最多又能实现8个Functio

热文推荐