首页> 中国专利> 一种基于开源项目的互联网地图应用开发平台

一种基于开源项目的互联网地图应用开发平台

摘要

本发明公开了一种基于开源项目的互联网地图应用开发平台,涉及互联网地图服务、应用、软件研发技术领域。该地图应用开发平台,采用面向对象的编程设计思想,将GIS专业语言转化为普通的互联网软件开发语言,基于开源的Openlayers前端地图渲染引擎,封装了33个地图基础类及25个空间分析接口,封装的类、方法等接口简单易懂,支持OGC标准地图数据、地图服务,具有前端空间分析功能。解决了非GIS专业开发人员开发互联网地图应用时学习成本高、不能灵活接入标准地图服务及地图数据等问题。

著录项

  • 公开/公告号CN106886586A

    专利类型发明专利

  • 公开/公告日2017-06-23

    原文格式PDF

  • 申请/专利权人 北京大地图科技有限公司;

    申请/专利号CN201710084532.1

  • 申请日2017-02-16

  • 分类号G06F17/30(20060101);

  • 代理机构11337 北京市盛峰律师事务所;

  • 代理人梁艳

  • 地址 102200 北京市昌平区沙河镇昌平路97号8幢410

  • 入库时间 2023-06-19 02:37:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-21

    授权

    授权

  • 2019-11-22

    专利申请权的转移 IPC(主分类):G06F17/30 登记生效日:20191105 变更前: 变更后: 申请日:20170216

    专利申请权、专利权的转移

  • 2017-07-18

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20170216

    实质审查的生效

  • 2017-06-23

    公开

    公开

说明书

技术领域

本发明涉及互联网地图服务、应用、软件研发技术领域,尤其涉及一种基于开源项目的互联网地图应用开发平台。

背景技术

随着互联网的迅速发展,WebGIS应运而生,电子地图成为人们生活中不可或缺的一部分。使用电子地图进行导航定位、将各种数据进行地图可视化展示、使用地图数据分析辅助决策是地图应用开发中最多的需求。

目前,各个地图软件服务厂商纷纷推出自己的地图开发API,互联网地图应用开发主要是基于各大地理信息软件服务厂商的WebGIS应用开发API或者SDK,但是其技术体系复杂、非开源,对于非GIS专业的研发人员来说,学习难度大、开发成本高,且空间分析功能需要配合昂贵的后台软件。虽然行业内已经有百度、高德等互联网地图开发SDK,但它们存在着非开源难调试、不能对接标准数据、没有空间分析功能等问题。

所以,一款使用简单、功能强大的地图开发API,将会给非GIS专业的开发人员快速搭建地图应用提供便利。

发明内容

本发明的目的在于提供一种基于开源项目的互联网地图应用开发平台,从而解决现有技术中存在的前述问题。

为了实现上述目的,本发明采用的技术方案如下:

一种基于开源项目的互联网地图应用开发平台,包括:

地图开发类库,基于开源项目OpenLayers开发,以其源代码作为基础底层,使用面向对象的编程思想封装上层类和方法,使用JavaScript语言编写,用于在网页前端渲染和展示地图;

参考文档,根据所述地图开发类库中规定的代码编写及注释规范,使用JSDoc从源代码中批量生成,用于解释和说明所述地图开发类库中类、属性和方法;

示例页面,使用打包好的所述地图开发类库制作,可在线编辑调试,涵盖了所述地图开发类库中所有的类和方法,用于开发者在开发时进行参考使用。

优选地,所述地图开发类库用于在网页前端渲染和展示地图,具体包括:叠加图层、在地图上添加覆盖物;为所述图层和覆盖物绑定事件;在地图页面显示控件;通过接口测量距离、测量面积;按空间形状、关键字检索POI信息;进行空间分析。

优选地,所述图层包括矢量图层和栅格瓦片图层;所述覆盖物包括点、线、面和信息窗口;所述事件包括点击和鼠标操作;所述控件包括右键菜单、比例尺、鹰眼、城市切换、导航、标绘和定位;所述空间分析包括空间叠置、转换和计算。

优选地,所述空间分析采用如下步骤实施:

步骤一,将所述地图开发类库中的地图要素对象转换为标准的GeoJosn对象;

步骤二,使用Turf.js的分析方法对步骤一中的标准GeoJson对象进行空间分析操作,分析结果是GeoJson对象;

步骤三,将步骤二所述GeoJson分析结果转换为所述地图开发类库中的对象,并在地图中进行展示。

优选地,所述参考文档,使用JSDoc从源代码中批量生成,具体为:基于开源的自动化文档生成工具JSDoc,对其源码中的文档模板按照文档的美观性展示要求进行修改,对所述地图开发类库源码进行标准化注释,批量生成。

优选地,所述参考文档,用于解释和说明所述地图开发类库中类、属性和方法,具体为,在所述参考文档的页面中列出所有类的列表,对每个类的属性、方法、和方法参数进行详细说明和描述,将类名和方法名作为用于跳转查阅的链接。

优选地,所述示例页面,包括地图、覆盖物、信息窗口、地图控件、鼠标操作、事件绑定、检索、定位、图层叠加、右键菜单和空间分析的示例。

优选地,所述示例页面,包括33类88个示例。

优选地,所述示例页面,使用Codemirror技术在页面中创建源代码编辑器, 同时展示代码运行效果。

本发明的有益效果是:本发明实施例提供的基于开源项目的互联网地图应用开发平台,采用面向对象的编程设计思想,将GIS专业语言转化为普通的互联网软件开发语言,基于开源的Openlayers前端地图渲染引擎,封装了33个地图基础类及25个空间分析接口,封装的类、方法等接口简单易懂,支持OGC标准地图数据、地图服务,具有前端空间分析功能。解决了非GIS专业开发人员开发互联网地图应用时学习成本高、不能灵活接入标准地图服务及地图数据等问题。

附图说明

图1是基于开源项目的互联网地图应用开发平台的组成部分及实现方式示意图;

图2是源码结构示意图;

图3是缓冲分析的示例效果图;

图4是缓冲分析的示例效果图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明实施例提供了一种基于开源项目的互联网地图应用开发平台,包括:

地图开发类库,基于开源项目OpenLayers开发,以其源代码作为基础底层,使用面向对象的编程思想封装上层类和方法,使用JavaScript语言编写,用于在网页前端渲染和展示地图;

参考文档,根据所述地图开发类库中规定的代码编写及注释规范,使用JSDoc从源代码中批量生成,用于解释和说明所述地图开发类库中类、属性和方法;

示例页面,使用打包好的所述地图开发类库制作,可在线编辑调试,涵盖了所述地图开发类库中所有的类和方法,用于开发者在开发时进行参考使用。

在实际操作过程中,地图开发类库基于开源项目OpenLayers开发,以其源 代码作为基础底层,使用面向对象的编程思想封装上层类和方法。例如,对ol.Map类作为内部对象封装BigMap.Map类;将ol.Feature及ol.Overlay统一封装为BigMap.Overlay类,只在类库内部区分;将ol.map.layer.source等复杂的对象属性关系简化为BigMap.Map.Layer,从而简化了开发人员对地图对象的理解和使用。

同时,本发明实施例中严格定义了代码编写及注释的规范,从而提高了源代码的可读性和可维护性。

其中,地图开发类库的开发过程具体可以采用如下方法进行实施:

1、使用prototype对象定义类的属性和方法,例如,BigMap.Map.prototype.addLayer定义Map对象添加图层的方法。

2、使用开源项目Google Closure Library定义类的继承及依赖关系,在每个类的定义前需要声明类的所属命名空间及所依赖的类,例如,在Marker类的定义前添加语句goog.provide('BigMap.Marker');goog.require('ol.Feature');声明该类属于BigMap命名空间并依赖于ol.Feature类。

3、代码注释采用YUIDoc注释规范,用于声明一个代码块中编写的是什么内容。例如下面的注释语句说明该代码块定义了Marker类的setAnimation方法,用于设置Marker的动画效果。‘@param’是一个标签,声明方法的参数是什么类型及参数的意义。在这里,setAnimation需要一个String类型的参数指明Marker进行的动画类型是什么。

类库编写完成后,为了方便前端网页调用,使用Google Closure Library为源代码构建依赖并压缩打包,操作如下:

1、编写Python脚本构建类库的依赖关系

closure-library/closure/bin/build/depswriter.py-root_with_prefix="BigMap/BigMap../../../BigMap/BigMap"--output_file="build/BigMap.deps.js"。

2、编写Python脚本压缩源代码文件

closure-library/closure/bin/build/closurebuilder.py--root=closure

-library/--root=BigMap/BigMap--root=ol/--root=ol.ext/

--namespace="BigMap.Map"--output_mode=compiled

--compiler_jar=compiler.jar>build/BigMap.min.js。

最终生成的BigMap.min.js即为地图开发包,将其放到网络路径下即可在网页中引用来开发网页地图应用。

本发明实施例中,所述地图开发类库用于在网页前端渲染和展示地图,具体包括:叠加图层、在地图上添加覆盖物;为所述图层和覆盖物绑定事件;在地图页面显示控件;通过接口测量距离、测量面积;按空间形状、关键字检索POI信息;进行空间分析。

其中,所述图层包括矢量图层和栅格瓦片图层;所述覆盖物包括点、线、面和信息窗口;所述事件包括点击和鼠标操作;所述控件包括右键菜单、比例尺、鹰眼、城市切换、导航、标绘和定位;所述空间分析包括空间叠置、转换和计算。

本发明实施例中,由于采用Openlayers专业的GIS开发类库将其对象区分地很详细,以矢量图层为例,VectorLayer对象包含Source和Style对象,Source对象包含Feature对象,而Feature对象接收坐标数据。在本发明实施中,通过将Feature设置为Layer的直接子对象,简化开发者的理解。同时舍弃Style对象,直接使用Feature的set方法设置样式。所以,采用本发明实施例提供的平台开发出来的接口以最少量的和最浅显的结构关系让开发者容易理解和使用。

在本发明的一个优选实施例中,所述空间分析可以采用如下步骤实施:

步骤一,将所述地图开发类库中的地图要素对象转换为标准的GeoJosn对 象;

步骤二,使用Turf.js的分析方法对步骤一中的标准GeoJson对象进行空间分析操作,分析结果是GeoJson对象;

步骤三,将步骤二所述GeoJson分析结果转换为所述地图开发类库中的对象,并在地图中进行展示。

本发明实施例提供的地图开发类库,具有空间分析功能,基于开源的Turf.js底层进行封装。Turf.js支持对单个地图要素的分析,将标准的GeoJson数据进行分析并输出GeoJson格式的对象。本发明中首先将类库中的地图要素对象转换为标准的GeoJosn格式对象,然后使用Turf的分析方法进行空间操作,最后将GeoJson对象转换为类库中的对象,并在地图中进行展示。

空间分析功能的具体实现步骤,在此以缓冲分析功能Buffer为例进行详细的说明,其代码可如下所示:

即,缓冲分析功能的实现可以分为如下4个步骤:

1.将平台overlay对象转换为turf库polygon对象,使用的方法是turf.polygon(geometryPoints);

2.执行缓冲分析操作,调用turf库turf.buffer()方法;

3.将turf分析结果json转换为平台Polygon对象;

4.转换后的Polygon可直接通过map.addOverlay()方法添加到地图上。

在本发明的一个实施例中,所述参考文档,使用JSDoc从源代码中批量生成,具体可以为:基于开源的自动化文档生成工具JSDoc,对其源码中的文档模板按照文档的美观性展示要求进行修改,对所述地图开发类库源码进行标准化注释,批量生成。

根据开发类库过程中规定的的代码编写及注释规范,使用自动化文档工具JSDoc可以批量地生成类库参考文档。在本发明中使用jsdoc_toolkit-2.4.0, 在MyEclipse的Java环境下运行。如图2所示。

在图2中,修改其中的templates文件夹下的模板文件来达到所需要的参考文档页面样式要求。其中.tmpl文件是网页中各部分的模板,default.css是网页的样式表文件,default.js是控制页面操作的脚本,Index.html即是整个参考文档的主页面。

模板修改完成后,修改源码中的build.properties配置文件指定好模板所在位置以及文档的输出位置。

然后在MyEclipse中以Ant Built方式运行build.xml文件,最终生成网页文件发布到网站中供开发者浏览。

其中,所述参考文档,用于解释和说明所述地图开发类库中类、属性和方法,具体为,在所述参考文档的页面中列出所有类的列表,对每个类的属性、方法、和方法参数进行详细说明和描述,将类名和方法名作为用于跳转查阅的链接。

本发明实施例中,所述示例页面,包括地图、覆盖物、信息窗口、地图控件、鼠标操作、事件绑定、检索、定位、图层叠加、右键菜单和空间分析的示例。

其中,进行缓冲分析的示例效果可参见图3和4所示。

本发明实施例中,所述示例页面,包括33类88个示例。涵盖了所述地图开发类库中所有的类和方法,以便开发者在开发地图应用时参考使用。

本发明实施例中,所述示例页面,使用Codemirror技术在页面中创建源代码编辑器,同时展示代码运行效果。

具体的,本发明实施例提供的所有33个地图类,每个类都有必要的属性和方法,类列表如下:

88个在线示例,分类及列表如下:

所以,本发明实施例提供的基于开源项目的互联网地图应用开发平台具有以下优点:

1、API的类、方法、接口简单易懂,节省开发人员的学习成本。

2、具有接入标准地图数据和服务的能力,数据展示方式更灵活。

3、具有前端空间分析的功能,减少应用后台开发及相关资源。

4、示例代码可在线编辑调试,方便开发者快速使用。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的基于开源项目的互联网地图应用开发平台,采用面向对象的编程设计思想,将GIS专业语言转化为普通的互联网软件开发语言,基于开源的Openlayers前端地图渲染引擎,封装了33个地图基础类及25个空间分析接口,封装的类、方法等接口简单易懂,支持OGC标准地图数据、地图服务,具有前端空间分析功能。解决了非GIS专业开发人员开发互联网地图应用时学习成本高、不能灵活接入标准地图服务及地图数据等问题。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。

上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号