openLayers加载wms图层并定位到该图层

news/2024/10/11 11:22:10/

openLayers定位到wms图层

我们的wms是加载geoserver发布的服务,wms加载的图层是没法通过layer.getSource().getExtent()来获取到extents(边界)的;实现思路是通过postgis的函数(st_extent(geom))来获取extents;

在这里插入图片描述

返回前端后格式化一下成数组的extens就可以实现定位了。

后端部分逻辑代码:

java">@ApiOperation("获取行政区extent")@OpLog("获取行政区extent")@GetMapping("/extent")public Result<String> getRegionExtent( String xzqdm ) {return Result.ok(regionsService.getRegionExtent(xzqdm));}// sql代码
<select id="getRegionExtent" resultType="java.lang.String">SELECT st_extent(geom) from st_2k_region_s WHERE xzqdm = #{xzqdm}
</select>

前端部分代码:

/*** 根据行政区代码定位到wms的图层*/getViewWmsLayer(xzqdm = '530000') {getRegionExtent({xzqdm}).then(({result}) => {const extents = this.parseBoxString(result)console.log('extents:', extents)this.map.getView().fit(extents, {duration: 1000});})}/*** 把st_extent的box数据转化为数组* 例如:BOX(102.167950753 24.388888934,103.669001313 26.545210101)* 转化为:[102.167950753, 24.388888934, 103.669001313, 26.545210101]*/parseBoxString(boxString) {// 正则表达式匹配BOX(...)内的内容,并分割成两个坐标对  const regex = /BOX\(([\d.]+ [\d.]+),([\d.]+ [\d.]+)\)/;const matches = boxString.match(regex);if (!matches || matches.length < 3) {throw new Error('Invalid box string format');}// 提取出经纬度坐标,并转换为数字类型  const coord1 = matches[1].split(' ').map(Number);const coord2 = matches[2].split(' ').map(Number);return [...coord1, ...coord2];}

搞定!


http://www.ppmy.cn/news/1464027.html

相关文章

Day06-Mybatis

1. Mybatis介绍 2. Mybatis连接数据库并返回数据事例 连接oracle数据的设置方式 spring.application.namespringboot-mybatis spring.datasource.driver-class-nameoracle.jdbc.OracleDriver spring.datasource.urljdbc:oracle:thin:192.168.100.66:1521:orcl spring.datasour…

死锁的四个必要条件

死锁的四个必要条件如下&#xff1a; 互斥条件&#xff08;Mutual Exclusion&#xff09;&#xff1a;资源是独占的&#xff0c;即在同一时间内一个资源只能被一个进程或线程所使用&#xff0c;其他进程或线程无法访问该资源。 请求与保持条件&#xff08;Hold and Wait&#…

当传统文化遇上数字化,等级保护测评的必要性

第二十届中国&#xff08;深圳&#xff09;国际文化产业博览交易会5月23日在深圳开幕。本届文博会以创办20年为契机&#xff0c;加大创新力度&#xff0c;加快转型升级&#xff0c;着力提升国际化、市场化、专业化和数字化水平&#xff0c;不断强化交易功能&#xff0c;打造富有…

盘点好用的国产传输软件,看看哪个适合你

流动让数据释放价值&#xff0c;无论什么企业&#xff0c;什么行业&#xff0c;业务的正常开展均是以数据和文件的传输为基础&#xff0c;因此&#xff0c;对企业来说&#xff0c;文件传输工具是最基础但也是最举重若轻的。在琳琅满目的多种国产传输软件中&#xff0c;哪个是最…

NDIS小端口驱动开发(三)

微型端口驱动程序处理来自过度驱动程序的发送请求&#xff0c;并发出接收指示。 在单个函数调用中&#xff0c;NDIS 微型端口驱动程序可以指示具有多个接收 NET_BUFFER_LIST 结构的链接列表。 微型端口驱动程序可以处理对每个NET_BUFFER_LIST结构上具有多个 NET_BUFFER 结构的多…

Linux 防火墙 firewalld 常用命令

1 防火墙 - firewalld 1.1 开启防火墙 # 临时性开启&#xff0c;服务器重启后会恢复为原来的状态 systemctl start firewalld # 永久性开启&#xff08;即开机启动&#xff09;&#xff0c;重启服务器后生效 systemctl enable firewalld1.2 关闭防火墙 # 临时性关闭&#xf…

什么是“SQL注入攻击”?如何预防和应对?

一、SQL注入攻击的概念 SQL注入攻击是一种针对数据库驱动的应用程序的攻击技术&#xff0c;其中攻击者通过在应用程序的输入字段中插入或“注入”恶意的SQL代码&#xff0c;试图非法访问、操作或破坏后端数据库。当应用程序不正确地处理用户输入&#xff0c;并将其直接拼接到SQ…

本地图形客户端查看git提交历史 使用 TortoiseGit

要在本地查看提交记录和修改历史&#xff0c;可以使用 TortoiseGit 和 Git-SCM。这两个工具都提供了强大的功能来管理和查看 Git 仓库中的提交记录和历史修改。 使用 TortoiseGit 查看提交记录和修改历史 查看提交记录&#xff08;Log&#xff09;&#xff1a; 右键点击项目文…