从着手研究Gis到刚才最后一个功能的实现,算算有一个月的时间,从前端到后端是geoserver+OpenLayers+MySQL,很开源,很通用
总的实现思路:用WMS作地图的显示,用Vector做基本操作,因为是第一次接触GIS这块,这是前期我选择的实现方式,这两天意识到有更方便的方式,当然研究越深,知道的也越多,这个暂时不表,先说下各个功能的实现方式:
增加功能,很简单就是在前台图层(注:图层的概念和PS图层的概念类似,而整个Map是个容器,一个一个图层的叠加构成了Map的总体视觉体现)上新增一个点,能动态的保存到后台数据库中,而通过刷新,能展现出来。做了个按钮,点击后,就新建一个Vector,给这个vector注册一个featureadded监听事件,一旦发现有新的元素添加,通过一些转换将元素的坐标通过调用后台保存到数据库,按着这个思路实现没问题,中间遇到的都是一些技术上的小问题,但就是这些小问题往往让我们很纠结,因为不解决下一步就没办法进行。
查询功能,通过点击地图上的元素能查询到这个元素在数据库中保存的一些信息,比如一个点是医院的话,点击它后台数据库中保存的医院的名字,地址,电话等一些基本信息都能在前台看到。这个功能实现也不难,因为OpenLayers封装了一个控件WMSGetFeatureInfo,然后通过Popup格式化这些信息并弹出来,这个也没遇到什么问题
删除功能:当确定删除的时候,点击元素能从后台数据库中删除元素对应的那条数据,这个功能我借用了查询功能的控件,但问题也出现了,WMSGetFeatureInfo控件能直接返回信息,我前期一直认为这个控件是向Geoserver发出的请求,因为geoserver发布图层的时候是和对应数据库中的表绑定的,因为控件功能是封装的一直想当然的认为是这样,而它所返回的信息是Html形式的,在如何取到html中的元素的id属性这个问题上纠结了两天,直到突然意识到可以用正则表达式进行匹配,当然这个问题是解决了能成功的进行删除操作,但这两天我才悲催的感觉到,好像通过feature.fid就能直接拿到你点击的那个点的fid,走了弯路浪费了两天的光阴。
下面是编辑功能,编辑功能有两个预想一个是在查询功能弹出信息框的时候改用Extjs实现这样能直接在信息框里修改数据,另一个预想就是拖动点到一个新位置能动态的保存,第一个预想容易实现,第二个遇到一些问题,也实现了,方法就是新建vector并用WFS取数据,添加ModifyFeature控件,在用WFS取数据的时候遇到了问题,我是照着官方的例子做的,代码格式什么的没问题但就是取不到数据,和群里的哥们请教了下 也没找到错误,直到让一个同事帮忙看下代码,奇迹出现了只见他轻轻的点击一下按钮,地图出现了,数据取到了!而那个按钮我已经点击了一上午了,当时那个心啊 内牛满面。。。。
最后一个功能是增加marker 能添加备注文字,并且点击marker备注文字能显示出来,这个功能做成什么样我心里也没个具体的逻辑,看了下百度地图的标记功能,就按照它那个样式实现的,marker不保存到后台数据库里 只是暂存前台,一刷新就没了。
希望写的东西能让刚接触GIS的朋友,实现基本Demo的时候有个参考不会感到不知从那下手。
基本功能实现了,下一步自然就是优化了。
- 大小: 47.1 KB
分享到:
相关推荐
本教程将深入探讨如何对OpenLayers的常用功能进行简单封装,以提升开发效率和代码复用性。 首先,我们从地图要素创建开始。在OpenLayers中,要素(Feature)是地图上的几何对象,可以是点、线或面。你可以通过`ol....
在这个场景中,我们将深入探讨如何利用OpenLayers实现轨迹回放功能,即根据一组坐标点在地图上动态地显示轨迹移动的过程。 首先,我们需要理解轨迹回放的基本原理。轨迹通常由一系列时间戳标记的地理坐标(经度、...
在Vue3脚手架中,OpenLayers被用于渲染地图,添加图层,以及实现地图的交互功能,如缩放、平移、标记、测量等。 **TypeScript** 在这个项目中的应用增强了代码的可维护性和可读性。TypeScript的类型系统可以帮助...
本篇文章将详细讲解如何利用Java、Geotools、WContour以及OpenLayers这四个关键组件,实现等值线和等值面的功能。 首先,Java作为一门广泛使用的编程语言,以其强大的类库和跨平台特性,为开发GIS应用提供了坚实的...
这个"cm_Openlayers-master"压缩包提供了丰富的示例,帮助开发者深入理解并掌握OpenLayers的使用,实现地图布点、监控位置、动态显示位置态势以及轨迹回放等功能。 一、OpenLayers基础 OpenLayers允许开发者在任何...
1. **OpenLayers基本概念**: - **地图层(Layers)**:OpenLayers中的地图由多个图层组成,每个图层可以是不同的数据源,如卫星图像、地形图或者自定义矢量数据。 - **投影(Projections)**:地图坐标系统转换,...
OpenLayers是一个强大的开源JavaScript库,用于在Web上展示地图,支持多种地图源和丰富的交互功能。在这个场景中,我们将深入探讨如何使用OpenLayers来加载面要素对象,并实现动态闪烁效果。 首先,你需要了解...
综上所述,实现OpenLayers3版本的动态标绘API需要理解OpenLayers3的基本架构,掌握图层、控制、几何对象、事件处理、样式以及交互等关键概念。结合提供的Gitee仓库资源,开发者可以快速上手并根据需求定制自己的地图...
OpenLayers 提供了丰富的API,可以实现地图的缩放、平移、图层控制、标记添加、地理编码等功能。 ### 2. 安装与引入 要开始使用OpenLayers,首先需要在HTML文件中引入OpenLayers库。你可以从官方网站下载最新版本...
5. **高级功能实现**:进一步实现更复杂的功能,例如标记点、绘制图形等。 6. **性能优化**:对地图应用进行性能优化,包括减少HTTP请求、优化图像加载等。 #### 知识点五:案例分析与实践 本书还提供了一系列的...
通过OpenLayers,你可以实现地图的缩放、平移、图层控制以及添加自定义图层等功能。 接下来是GeoServer。GeoServer是一个符合OGC标准的WMS和WFS服务器,能够发布和编辑地理空间数据。它支持多种数据格式,如...
通过阅读文档,开发者可以了解到如何利用新版本提供的功能来实现自己的需求。 6. **源代码(Sources)**:源代码提供了深入理解OpenLayers工作原理的机会。开发者可以查看和研究源码,以便进行二次开发或者定制化...
1. **OpenLayers基本结构**:OpenLayers的核心组件包括地图(Map)对象,图层(Layer)对象,控件(Control)和源(Source)。地图对象是整个应用的基础,图层则负责展示地图内容,控件用于用户交互,源则负责获取地图数据。...
总的来说,OpenLayers通过提供这些组件和接口,使得开发者能够构建复杂、高性能的GIS应用,无论是基本的地图浏览、数据展示,还是高级的分析和编辑功能,都能轻松实现。中文API文档的出现,无疑为中文开发者提供了极...
6. **事件(Event Handling)**:OpenLayers 3支持各种地图事件,如单击、双击、移动等,通过监听这些事件,可以实现丰富的交互功能。 ```javascript map.on('click', function(event) { console.log('点击坐标:', ...
在OpenLayers 3中实现车辆轨迹回放功能是一项常见的需求,尤其在GIS(地理信息系统)应用中。OpenLayers是一个强大的JavaScript库,它允许开发者在Web上创建交互式的地图。在这个功能中,我们将讨论如何利用...