SpringBoot+Vue+OpenLayers6完成前后端分离的“疫情地图”实战项目(一、地图数据处理及代码托管)

openlayers6【十二】vue 切片图层 TileLayer 切换地图底图,图层叠加效果 1. 效果图 官方参考文档:https://openlayers.org/en/latest/examples/zoomslider.html 2. 使用 ZoomSlider 控件 2.1 导入ZoomSlider 控件 import { defaults as defaultControls, ZoomSlider } from "ol/control"; 2.2 向map地图创建一个 ZoomSlider控件即可 this.map.addControl(new ZoomSlider()); 阅读详情

前面我们介绍了Vue+webpack+openlayer的地图基础知识,从这一章开始,我们将正式开始我们的基于SpringBoot+Vue+OpenLayers的实战项目---疫情地图!

一、疫情地图数据处理

这里我介绍一下数据来源,我们首先从这里:http://datav.aliyun.com/tools/atlas/#&lat=34.994003757575776&lng=96.85546875&zoom=4

下载到全国各省(这里疫情数据我只统计到了省级)的行政区划图,然后在ArcGIS中根据当前国内疫情感染人数给矢量数据赋值如下图:

这里SHP数据的最后一个字段countNum就是截至到3.26日中国境内各省的疫情感染人数。

二、新建项目covidmap并托管到码云

1、码云新建项目,这里我建立了一个开源项目covidmap

 2、电脑本地新建一个文件夹用来克隆码云上我们刚刚新建的项目,

这里直接在文件夹右击使用Git bash命令

在命令行使用命令  git  clone  ********  后面是具体的码云上项目的地址

上面的截图说明代码已经克隆到本地了。

3、创建项目:

4、运行测试创建的项目:

5、Vscode打开并稍微改造项目 

首先引入我们的openlayers包,这里我用的cnpm下载的比较快一点,下面我也会用cnpm统一操作,不能一会npm一会cnpm容易使程序崩溃。命令如下:

 其中--save是指无论在开发环境中还是线上环境都添加这个依赖包。再看一下我们是否加进来了这个依赖包,打开package.json文件:

ok,已经成功引入了ol最新版本6..2.1。

然后我们修改一下项目结构,我们把系统自动构建的HelloWorld.vue文件删除,把components文件夹也删掉,然后在src文件夹下新建一个pages文件夹,在pages文件夹下,我们新建一个home文件夹,在home文件夹下,我们新建一个components文件夹和我们的地图组件HomeMap.vue如下图:

再打开index.js文件如下图:

这里我们已经把HelloWorld.vue文件删除了,所以我们修改路由配置项为home文件夹下的Home组件如下:

然后我们在home文件夹下的components文件夹下新建一个我们的Map组件,如下图所示:

下面我们在Map.vue中把我们的疫情数据地图加载上,这里通过加载Geoserver发布的地图服务的方式进行加载,首先把我们的SHP数据发布为Geoserver服务如下:

HomeMap.vue的代码如下所示:

<template>
      <div>
            <div id="map"></div>
      </div>
</template>
<script>
import 'ol/ol.css';
import Map from 'ol/Map';
import View from 'ol/View';
import GeoJSON from 'ol/format/GeoJSON';
import VectorLayer from 'ol/layer/Vector';
import VectorSource from 'ol/source/Vector';
import {Fill, Stroke, Style, Text} from 'ol/style';
export default {
    name:'OlMapWms',
    mounted() {   
          var vectorLayer = new VectorLayer({
            source: new VectorSource({
                  url: 'http://localhost:8080/geoserver/covidmap/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=covidmap%3Achina&outputFormat=application%2Fjson',
                  format: new GeoJSON()
            })
            });
            var map = new Map({
                  layers: [vectorLayer],
                  target: 'map',
                  view: new View({
                        center: [0, 0],
                        zoom: 3
                  })
             });
    }
}
</script>
<style lang="stylus" scoped>
#map
      width:900px
      height:350px
</style>

这里我们加载的是服务的GeoJson格式数据,如下图所示:

我们再来把App.vue的代码修改一下,代码如下:

<template>
    <router-view/>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

这里只保留了router-view,下面我们再来修改一下router文件夹下的index.js的文件,代码如下:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/pages/home/Home.vue'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    }
  ]
})

这里我们把Home.vue组件引入进行路由到Home.vue界面,最后我们再来修改一下Home.vue的代码 如下:

<template>
  <!-- 这里我们就可以用引入的HomeMap组件了 -->
    <home-map></home-map>
</template>

<script>
// 首先引入局部组件
import HomeMap from './components/HomeMap'
export default {
  name: 'Home',
  // 需要声明局部组件
  components: {
    HomeMap: HomeMap
  }
}
</script>

<style scoped>
</style>

这里我们在Home.vue中引入了HomeMap子组件,并且在模板文件中使用了HomeMap子组件,这样我们的系统Home页面目前就只有我们的HomeMap组件了,下面我们运行系统看一下效果:

这样我们的系统就已经搭建并初步编写成功了,这里由于我的8080端口已经开启了Tomcat,所以我给vue项目重新指定了端口:8086,这个可以在config文件夹下的index.js中修改,如下图所示:

下面我们把我们这一部分的代码推到码云仓库中!

主要执行以下git命令:

1、git status 查看仓库状态

2、git add . 将代码提交到缓存区

3、git commit -m 'project initialize'

4、git push  推到远程仓库

最后,我们再去Git仓库看一下:

ok我们已经成功的推到了远程仓库,这样我们的实战项目的地图数据处理及代码托管就已经完成了!下一节我们继续开发页面,大家加油!

WebGIS开发系列教程(3):Openlayers快速入门 本系列教程为webgis二维开发入门openlayers零基础小白学习教程,本篇为第三篇。完整版可以滑到文末链接下载。 阅读详情

相关推荐

ZLMediaKit+SpringBoot+Vue+Geoserver实现拉取摄像头rtsp流并在web端播放

结合以上流程,需要实现对摄像头名称、在地图上位置的增删改查以及摄像头的预览功能。注意这里的摄像头只支持H264编码格式的拉流和播放。

BADAO_LIUMANG_QIZHI的博客 3189

java spring 集成openlayers springdoc openapi

java spring 集成openlayers springdoc openapi_mob6454cc72f29c的技术博客_51CTO博客

m0_46398929的博客 456

Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合

场景 Openlayers中实现地图上打点并显示图标和文字: Openlayers中实现地图上打点并显示图标和文字_BADAO_LIUMANG_QIZHI的博客-优快云博客_openlayers 打点 上面实现加载显示离线地图并显示图标元素的效果后。 实现当多个元素堆积在一起时实现聚合显示效果。 并且伴随着地图的缩放实现自动聚合显示和取消聚合。 注: 博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_优快云博客-C#,SpringBoot,架构之路领域博主

BADAO_LIUMANG_QIZHI的博客 3409

基于 Openlayers 实现的地图常用功能工具集合

为地图开发人员提供服务的专业地图工具。随机数据:框选范围,生成点线面随机数据。标绘数据:选择点线面,在地图上标绘数据;也可以通过搜索地名进行定位后操作。投影数据转换、火星百度坐标转换、GPS 坐标转换:输入WKTGeoJson格式数据,选择投影坐标。平滑曲线、曲面,缓冲,抽稀:输入WKTGeoJson格式数据。

非科班Java出身GISer的博客 3032

SpringBoot+Vue+Openlayers实现地图上新增和编辑坐标并保存提交

场景 若依前后端分离版手把手教你本地搭建环境并运行项目: https://blog.youkuaiyun.com/BADAO_LIUMANG_QIZHI/article/details/108465662 Vue中使用Openlayers加载Geoserver发布的ImageWMS: https://blog.youkuaiyun.com/BADAO_LIUMANG_QIZHI/article/details/115867709 在上面搭建起来Vue+SpringBoot的前后端分离的项目的基础上,并且加载显示地图之后。

BADAO_LIUMANG_QIZHI的博客 2826

Vue+Openlayer使用Draw实现交互式绘制多边形并获取面积

场景 Vue+Openlayer使用Draw实现交互式绘制线段: Vue+Openlayer使用Draw实现交互式绘制线段_BADAO_LIUMANG_QIZHI的博客-优快云博客 在上面的基础上实现的交互式绘制线段,还可以实现绘制多边形并直接计算出面积。 注: 博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_优快云博客 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 1、导入基本模块 //导入基本模块 import "ol/ol.css

BADAO_LIUMANG_QIZHI的博客 2969

动态实现全国疫情地图

通过Vue实现全国疫情地图 先上效果图!! 在这个小DEMO中,使用到获取肺炎感染人数的api接口是: http://interface.sina.cn/news/wap/fymap2020_data.d.json?_=1580892522427 因为没有使用后台语言,直接就是前端访问这个接口 所以用到了jsonp 因为jsonp不会涉及跨域问题,这里还是建议,如果有用到node.js的话还...

weixin_46240162的博客 3065

201:vue+openlayers 加载geojson文件形成围栏,可添加、修改、删除feature,导出geojson

第201个本示例的目的是介绍演示如何在vue+openlayers中实现围栏列表与图中feature双向互动功能。利用GeoJSON().readFeatures获得到features,通过转换在地图上形成图形,通过新增、修改、删除feature,可以更改整体的features关系。点击导出可以将修改后的features形成geojson文件导出来。

大剑师兰特的GIS世界 1545

SpringBoot+Vue+OpenLayers6完成前后端分离的WebGIS项目(整体介绍)

在前面的博客中,我们学习了SpringBoot、学习了Vue、也学习了OpenLayers,并且也都基于它们做了实战的小项目,现在我们要把这些目前市面上非常流行的技术融合在一起开发一个WebGIS项目。我会从零开始逐步编码逐步讲解,从基础知识学起到最后完成一个实战项目!跟大家一起从头开始利用SpringBoot做后台框架,Vue做前端框架,OpenLayers做GIS框架来开发一个完整的WebGI...

MagicMHD的博客 3965

前端交互与后端服务的无缝衔接

本文详细介绍了如何在前端使用OpenLayers框架实现地图的交互功能,并通过Spring Boot与Kotlin构建后端服务来处理和存储数据。文章通过代码示例展示了如何监听数据库消息保存事件,并实时更新地图UI,以及如何实现动态消息展示和编辑。此外,还探讨了如何利用Kotlin编写简洁的后端应用类,以及如何配置PostGIS数据结构映射。

weixin_35761094的博客 222

基于springboot_v2 集成地图

基于springboot_v2 集成百度地图展示

SpringBoot整合第三方工具

整合Junit 1.导入测试对应的starter 2.测试类使用@SpringBootTest修饰 3.使用自动装配的形式添加要测试的对象 @Repository public class BookDaoImpl implements BookDao { @Override public void save() { System.out.println("BookDao is running..."); } } @SpringBootTest class Sprin

海马有力量的博客 1745

spring_boot_openlayers

spring_boot_openlayers

模拟实现疫情分布图 openlayer+Geojson

原始数据来源:http://datav.aliyun.com/tools/atlas/#&lat=33.521903996156105&lng=104.29849999999999&zoom=4 解释个鸡儿,直接上代码(为了防止抄袭,还是解释8,有需求直接私信): 版本一: 1、首先读取geojson数据: //数据是网上下的http://datav.a...

平凡人的博客 1944

Figma汉化教程

Figma汉化教程

cc蒲公英的博客 1万+

sentaurus学习笔记(VDMOS仿真)(三)

在Sentaurus中,这通常意味着在2D仿真中,x轴指向下,y轴指向右。定义了在2D模拟中,网格尺寸按照一定的增长率进行扩展,这里的增长率为2.0,意味着远离最小尺寸区域的网格单元大小将是最小尺寸的两倍。定义了2D模拟中网格单元的最小尺寸为0.001微米,这有助于控制网格的最小大小,从而影响仿真的精度和计算成本。表示启用中等级别的日志信息输出,这有助于用户了解仿真过程中发生的事件和可能的问题。表示启用保存调试文件,这可以帮助用户在仿真过程中检查和验证模型的状态。这行代码设置了仿真过程中使用的线程数。

qq_52640792的博客 1807

Vue+OpenLayers学习系列(七)OpenLayers 加载GeoServer发布的矢量切片地图

一、首先要切片 注意首先要下载 GeoServer 的矢量切片插件(参见:https://zhuanlan.zhihu.com/p/62751184) 安装完矢量切片插件后,发布吐槽时,需要勾选如下: 然后找到发布的矢量切片图层 打开预览,并且查看浏览器中的源码,查看它的调用方式(在后面OpenLayers调用它时可以用同样的方式去调用): 二、OpenLayers 调用 <template> <div> <div id="map" ref

Ocean111best的博客 3062

IAR使用教程:如何导入现有工程并成功编译

详细介绍如何在IAR中导入现有工程项目并完成编译配置,解决常见报错问题。通过清晰的操作指引,帮助开发者快速上手iar使用教程中的关键环节,提升开发效率。

weixin_42437253的博客 884

vue框架用OpenLayers实现地图裁剪,定位

由于做大屏,公司想简单的做一个地图显示只想显示湖北省的地图 于是就有了下面的骚操作 个人记录 html <!-- 地图显示容器--> <div id="map" class="amap-page-container"></div> <!-- maker点击显示坐标信息--> <div id="makerAlert" class="makerAlert"> <div class="maker-t"> &

qq_35371821的博客 3015

Token验证绕过 靶场实战

实验介绍 1.漏洞简介 在Web领域基于Token的身份验证随处可见。在大多数使用Web API的互联网公司中,tokens 是多用户下处理认证的最佳方式。 具有以下几点特性: 1)无状态、可扩展 2)支持移动设备 3)跨程序调用 4)安全 2.原理基于Token的验证原理 基于Token的身份验证是无状态的,我们不将用户信息存在服务器或Session中。 NoSession意味着你的程序可以根据需要去增减机器,而不用去担心用户是...

weixin_54771278的博客 2251

车载导航GPS欺骗

因此,如果我们能够模拟卫星信号,将模拟的信号通过信号发射装置发送给GPS传感器,那么就有可能实现欺骗GPS传感器获取虚假的位置信息,这种技术即SDR(软件无线电,Software Defined Radio)[2]。究其原因,在不使用时钟模块的条件下,HackRF发送信号的频率可能不十分精准,因此GPS传感器接收到信号之后可能无法正常解析GPS信号,因此时钟信号可能是HackRF进行GPS欺骗的关键。2)HackRF是否使用了时钟模块,时钟模块决定了信号发送频率的精准程度,对实验的成败也是至关重要的。

2503_90751789的博客 1324

vue中集成openlayer+天地图实现地图打点和覆盖层加载

使用openlayer加载天地图,实现打点和覆盖层加载

Christina0109的博客 1364

秋叶ComfyUI整合包使用FRP实现公网访问教程 ComfyUI内网穿透 秋叶整合包

最近在做 ComfyUI 的实验时,我发现很多小伙伴都遇到一个问题:本地启动的 ComfyUI 服务只能在本地访问,想要通过公网远程访问,就必须借助来实现。作为一名前端开发工程师,我花了点时间把 ComfyUI 启动器和 FRP 配置整合了一下,今天就分享给大家。本文适合已经了解。需要注意的是 穿透到公网的话任何人都能访问 为了安全建议看我另一篇帖子加上密码验证 防止恶意攻击。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1348

Vue+Openlayer实现点击地图添加图标要素信息,编辑点位信息

效果图: 实现代码: <template> <div> <div id="map" ref="map" style="width: 100vw; height: 100vh" /> <div id="overlay-box" /> </div> </template> <script> import "ol/ol.css"; import TileLayer from "ol/layer/.

3004

Arduino与Proteus仿真实例-LCD2004-I2C(PCF8574)驱动仿真

LCD2004-I2C(PCF8574)驱动仿真 PCF8574/74A 通过两线双向 I2C 总线(串行时钟 (SCL)、串行数据 (SDA))提供通用远程 I/O 扩展。 LCD2004,即2004字符型液晶显示器,是一种点阵模块,用于显示字母、数字、字符等。 它由 5x8 个点阵位置组成; 每个位置可以显示一个字符。 两个字符之间有一个点间距,行之间有一个空格,从而将字符和行分开。 模型 2004 表示它显示 4 行,每行 20 个字符。 在前面的实例中对PCF8574和LCD2004的已经做了详细介

视觉与物联智能 1165

YOLO26涨点改进 | 全网独家创新,注意力改进篇| SCI一区Top | 引入AFCA自适应细粒度通道注意力,联合建模全局与局部通道依赖关系,适合目标检测、图像去雾、关键点检测、图像分类、图像分割

🔥本文提出了一种基于AFCA(自适应细粒度通道注意力)模块改进的YOLO26目标检测网络。AFCA通过联合建模全局与局部通道依赖关系,实现了更精细的通道注意力分配,能够增强目标相关特征并抑制背景噪声。该模块采用自适应融合策略动态平衡通道权重,在保持轻量级结构的同时,显著提升了小目标和复杂背景下的检测性能。文章详细介绍了AFCA的结构原理、实现优势,并提供了完整的代码实现和YAML配置文件,指导读者如何将该模块集成到YOLO26框架中。实验结果表明,AFCA在检测精度和鲁棒性方面优于传统注意力机制。

Ai缝合怪、助力小伙伴高效发论文 305
上一篇: Vue+Webpack+OpenLayers6完成组件化的WebGIS开发(二、组件化开发WebGIS实例)
下一篇: MyBatis Plus从入门到熟练使用(一、入门使用)
MagicMHD
博客等级 码龄9年 503粉丝 78原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值