WebGIS实战系列 三 项目的重新开始

说明

离上次更新该系列文章已经快四个多月。这段时间工作上比较忙以及自己也换了份工作就没有更新过相关内容,最近在做一个管网系统,自己也写了一些小的demo,里面有一些用到的天地图的keybing地图的key需要大家自己去获取。最近我打算会陆陆续续的更新完这个系列的文章。将自己在项目上的经验进行分享。


上面的项目截图:

界面搭建使用模板 vue-element-admin

该项目是Geoserver+openlayers5的一些例子,
完成的功能如下:

1. 地图控件
1.1  导航控件

在这里插入图片描述
1.2 zoomslider
在这里插入图片描述
1.3 鼠标位置

2. 属性查询

在这里插入图片描述

3. 空间查询

在这里插入图片描述
在这里插入图片描述

4. 在线编辑

在这里插入图片描述

5. 测量
5.1 长度测量

5.2 面积测量

在这里插入图片描述
5.3 面积测量填充

6. 加载天地图
7. 加载天地图投影转换
8. 缓冲区绘制(turf)
9. 拉框放大缩小

在这里插入图片描述

10. 点生成缓冲范围查询(√)

在这里插入图片描述

11. 轨迹回放(√)

在这里插入图片描述

12. 位置监控(√)

在这里插入图片描述

13. 面添加标注(√)

在这里插入图片描述


设置高亮显示关键代码:

if (this.resultVterSource.clear) {
  this.resultVterSource.clear();
}
const feature = this.vectorSource.getFeatureById(item.id);
this.resultVterSource.addFeature(feature);
// 设置显示区域偏移
this.getMap.getView().fit(this.resultVterSource.getExtent(), {
  padding: [0, 0, 0, document.body.clientWidth * 0.5]
});

取消地图双击放大事件

      const dblClickInteraction = this.map.getInteractions().getArray().find(interaction => {
        return interaction instanceof DoubleClickZoom
      })
      dblClickInteraction.setActive(false)
      // this.map.removeInteraction(dblClickInteraction)

生成凸包多边形代码:

        import Polygon from 'ol/geom/Polygon'
		import VectorLayer from 'ol/layer/Vector'
		import VectorSource from 'ol/source/Vector'
      // 测试代码
      const vector = new VectorLayer({ source: new VectorSource() })
      const hull = new Feature(new Polygon([[0, 0]]))
      vector.getSource().addFeature(hull)
      this.map.addLayer(vector)
      const pts = [
        [114.220879661414, 22.975200845151],
        [114.220860930313, 22.975184518253],
        [114.220860930313, 22.975184518253],
        [114.220828365764, 22.9752191658701],
        [114.220828365764, 22.9752191658701],
        [114.220833528445, 22.9752275112574],
        [114.220833528445, 22.9752275112574],
        [114.220821206418, 22.9752423824677],
        [114.220828365764, 22.9752191658701],
        [114.220720072206, 22.9751794500514],
        [114.220720072206, 22.9751794500514],
        [114.220658387028, 22.9754358833445],
        [114.220658387028, 22.9754358833445],
        [114.220620679617, 22.9755946167627],
        [114.220658387028, 22.9754358833445],
        [114.22065148011, 22.9754344030389],
        [114.220620679617, 22.9755946167627],
        [114.220531663839, 22.9759503527799],
        [114.220531663839, 22.9759503527799],
        [114.22040763731, 22.9764204097126],
        [114.22040763731, 22.9764204097126],
        [114.220397895536, 22.9764448850231],
        [114.220397895536, 22.9764448850231],
        [114.220394308619, 22.9764520687121]
      ]
      hull.setGeometry(new Polygon([this.convexHull(pts)]))
      this.map.getView().fit(vector.getSource().getExtent())
     convexHull(points) {
      let i
      points.sort(function (a, b) {
        return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]
      })
      console.log(points)
      const lower = []
      for (i = 0; i < points.length; i++) {
        while (lower.length >= 2 && this.clockwise(lower[lower.length - 2], lower[lower.length - 1], points[i])) {
          lower.pop()
        }
        lower.push(points[i])
      }
      const upper = []
      for (i = points.length - 1; i >= 0; i--) {
        while (upper.length >= 2 && this.clockwise(upper[upper.length - 2], upper[upper.length - 1], points[i])) {
          upper.pop()
        }
        upper.push(points[i])
      }

      upper.pop()
      lower.pop()
      return lower.concat(upper)
    },
    clockwise(a, b, o) {
      return ((a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]) <= 0)
    },

可以加我QQ:616251664 一起交流讨论webgis相关技术。

项目下载链接:https://download.csdn.net/download/cj9551/15417189

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
开发一个从零开始的WebGIS项目需要经历以下几个步骤: 1.需求分析:首先,我们需要仔细分析项目的需求,包括功能、数据和用户要求。通过对项目需求的深入了解,我们能够确保项目的开发能够满足用户的期望。 2.数据准备:在项目开始之前,我们需要收集和准备所需的地理空间数据。这可能涉及到数据的采集、清理和处理,以及与其他数据源的集成。 3.技术选型:根据需求和数据准备情况,我们需要选择合适的技术来实现项目。通常,WebGIS项目会使用一些常见的开发框架和技术,如JavaScript、HTML5和CSS3。同时,还需要选择适合的维地理信息系统工具和库,如CesiumJS或Three.js。 4.系统设计:在进行项目开发之前,我们需要进行系统设计。这包括定义系统的架构、模块和组件,并确定它们之间的关系和交互方式。同时,还需要设计用户界面和用户体验,以确保用户能够方便地浏览和操作维地理空间数据。 5.开发和测试:在系统设计完成后,我们可以开始项目的开发和测试。开发过程中,我们按照设计规范和要求,逐步实现系统的各个模块和功能。同时,我们需要进行测试来确保系统的正确性、稳定性和性能。 6.部署和上线:当项目开发和测试完成后,我们可以将系统部署到服务器上,并进行上线。通过将系统部署到互联网上,用户可以通过浏览器访问和使用WebGIS项目。 7.维护和优化:一旦项目上线,我们还需要进行系统的维护和优化。这包括持续性地收集用户反馈和需求,并及时修复系统中的bug和问题。同时,我们还需要不断改进系统的性能和用户体验,以提高用户满意度。 总之,从零开始开发WebGIS项目需要经历需求分析、数据准备、技术选型、系统设计、开发和测试、部署和上线,以及维护和优化等多个步骤。通过合理的计划和实施,我们可以成功地开发出满足用户需求的WebGIS项目
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiegiser#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值