您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 06-GIS功能开发
章节概要本节主要内容是介绍SuperMapiClientforJavaScript客户端开发工具包提供统一的GIS功能的开发思路,开发者掌握了基本的开发思路,结合接口帮助文档,可以快速的上手实施项目开发。一GIS功能开发思路使用SuperMapiClientforJavaScript进行WebGIS功能开发可以遵循一定的开发思路。地图显示相关的功能,如显示一幅地图、绘制矢量等,有关这类功能的开发已经在第3、4、5章进行了介绍,这里不再重复。在WebGIS系统中还有一些功能,它们需要利用网络GIS服务进行功能运算,并且有运算结果返回客户端的功能,例如查询功能,需要地图服务根据查询条件运算,返回符合条件的结果。对于这些带有属性结果的GIS功能,它们的开发都遵循统一的开发思路,在本节中将重点介绍。掌握了这个开发思路,在进行各种GIS功能开发的时候,就很容易摸清规律,快速开发。1.1带有属性结果的GIS功能开发思路带有属性结果的GIS功能开发思路有三步:第一步,设置GIS功能请求的参数,比如查询功能,要设置查询条件,查询哪些图层等;第二步,与SuperMapiServer的GIS服务进行交互,提交第一步的功能参数,设置监听返回结果的函数;第三步,在监听函数中获取返回结果,并解析结果,将结果显示到页面上,包括将矢量要素绘制到地图上(利用对象绘制课程的方法实现),将GIS服务返回的地图图片显示在地图上(利用地图对象开发课程的方法实现),或者利用网络开发语言将其他信息展示到页面上。客户端开发工具包的本质就是:所有GIS功能的运算都在GIS服务端进行,客户端程序就是实现与GIS服务的交互,提交参数获取结果,并可以实现在客户端上的渲染。在开发思路的三步中,SuperMapiClientforJavaScript在每一步开发中都提供相应的开发接口,开发可以参照接口帮助说明,在每一大类的接口中找到对应的三种开发接口,参数设置类,功能服务类(与GIS服务交互),结果类。1.1.1设置参数的接口第一步,设置参数。在SuperMapiClientforJavaScript中用于设置GIS功能参数,即参数设置类对象,其命名规则为:SuperMap.Rest.*Parameters,参数设置类对象都是以parameters结尾。比如:SuperMap.REST.MeasureParametersSuperMap.REST.QueryBySQLParametersSuperMap.REST.ThemeParametersSuperMap.REST.OverlayAnalystParametersSuperMap.REST.FindPathParameters1.1.2GIS功能交互的接口第二步:与SuperMapiServer的GIS服务进行交互,包括提交GIS参数,以及设置监听返回结果的函数。在SuperMapiClientforJavaScript中通过功能服务类对象来实现这一步开发,该类对象命名规则为:SuperMap.REST.*Service,该类对象都是以service结尾命名的。比如:SuperMap.REST.MeasureServiceSuperMap.REST.QueryBySQLServiceSuperMap.REST.ThemeServiceSuperMap.REST.OverlayAnalystServiceSuperMap.REST.FindPathService功能服务类对象的实例化:所有功能服务类对象的构造函数中都需要设置url参数,即即与之交互的GIS服务访问地址。不同功能,url的地址不同。1.1.2GIS功能交互的接口介绍几个常用GIS功能所需的URl地址1、地图量算功能、地图查询、在线专题图制作等与地图相关的功能开发,使用的功能服务类对象需要与SuperMapiServer地图服务进行交互,因此这些GIS功能的功能服务类对象的url地址应该设置为SuperMapiServer地图服务的地图资源访问地址,如varurl=、在线数据编辑的开发,设置url为数据服务的数据集资源url地址,就是指定到对哪个数据集进行CRUD,如varurl_edit=“”;3、数据查询的开发,设置url为数据服务根资源地址,如varurl=、网络分析功能的开发,设置url为交通网络分析服务的网络数据集资源访问地址,即在这个网络数据集模型上计算诸如最佳路径分析等网络分析功能,如varfindPathUrl=“@Changchun”。特别提示:在实际开发过程中,不同GIS功能需要设置不同的url,建议将各种所需的url设置为全局变量,便于GIS服务对象实例化时统一调用,也便于开发调试时快速定位url错误。1.1.2GIS功能交互的接口功能服务类实例化后,通过*Service.processAsync()将第一步的参数设置对象提交给SuperMapiserverGIS服务。1.1.2GIS功能交互的接口如何获取服务端返回的结果?1)首先要利用功能服务类对象*Service与SuperMapiServer服务对接获取结果。所有*Service对象都有两个事件:processCompleted事件和processFailed事件。他们负责监听SuperMapiServer服务,如有返回结果就触发事件。processCompleted事件是当SuperMapiServer服务顺利的对功能请求进行了运算,有运算结果返回时触发;processFailed事件是SuperMapiServer服务在处理功能过程中,发生意外没有完成功能运算,返回异常信息时触发。因此对*Service对象添加这两个事件的监听函数。页面上给出添加事件监听函数的一种方法,evnents.on();可以回顾一下javascript基础开发课程中介绍的添加监听函数的第二种方法:第二种设置事件监听函数的方法,在service对象实例化的时候设置触发事件,例如varfindPathService=newSuperMap.REST.FindPathService(findPathUrl,{eventListeners:{processCompleted:processCompleted}});2)构建监听函数,监听函数带有回参-*EventArgs,功能运算结果通过*EventArgs对象获取。1.1.3获取计算结果的接口SuperMapiServer服务运算的结果通过事件数据类获取,以EventArgs结尾命名。该类在监听函数中作为回参获取到。所有*EventArgs对象都有result属性,该属性对应*Result类—真正描述运算结果的对象。1.1.3获取计算结果的接口在获取到*Result对象后,就可以根据该对象的属性值解析结果,如果需要将结果显示在地图上,可以利用layer实现,其他结果数据通过web编程语言处理即可,比如查询返回的矢量数据的属性值,可以将其写入表格中呈现。实例:量算世界地图中线段[(10,29.9),(99.9,29.9)]的长度1.2交互式操作的开发在很多GIS功能中,交互式设置功能参数更受到项目的欢迎,比如进行路径分析时候,让操作者通过鼠标设置起点终点,会给操作者带来更好的用户体验。因此这里介绍交互式GIS功能实现的方法。首先回顾第五章中交互式操作的开发方法。1.2.1交互式操作开发步骤交互式设置参数的这类GIS功能开发,总体上来说,还是要遵循GIS功能开发的三步走方法。只不过在第一步设置参数的步骤中,先利用交互式控件获取绘制的几何对象。步骤如上。2.1查询分类在SuperMapiClintforJavaScript提供的查询功能可以分为两类,一类是地图查询,一类是数据查询。1)地图查询地图查询的范围是:对工作空间中地图里面的所有数据进行查询,SuperMapiClientforJavaScript的地图查询功能需要和SuperMapiServer的地图服务进行交互;地图查询的类型包括:SQL查询、范围查询、距离查询和几何查询。2)数据查询数据查询的范围是:对工作空间中数据源中数据集的数据进行查询,SuperMapiClientforJavaScript的数据查询功能需要和SuperMapiServer的数据服务进行交互。数据查询的类型包括SQL查询、缓冲查询、ID查询和几何查询。2.2查询过程开发查询功能可以遵循GIS功能开发三步走的思路进行。首先设置查询参数,其次利用功能服务类*Service对象,通过*Service.processAsync()提交参数,向GIS服务端发送请求,并通过*Service的processCompleted和processFailed事件监听处理过程,并获取GIS服务端返回的查询结果。2.3地图查询首先介绍地图查询的开发方法。地图查询,顾名思义,能查询的是地图上的图层数据;地图查询对应的GIS服务是SuperMapiServer的地图REST服务;查询接口命名规则:SuperMap.REST.Query***。2.3.1SQL查询首先介绍一下SQL查询,它主要的接口如下:1)设置查询参数类-QueryBySQLParameters,设置需要查询的图层,需要返回哪些对象;2)查询服务类-QueryBySQLService,需要设置GIS服务访问地址,创建事件监听,通过processAsync方法传递查询参数;3)查询服务事件数据类-QueryEventArgs,获取查询结果补充介绍:在SuperMapiClientforJavaScript帮助文档中,QueryBySQLService对象的方法很少,也找不到对应的processAsync方法。在这里就要说明一下,SuperMapiClientforJavaScript帮助文档中,有些对象是继承类,帮助文档中并没有在继承类的接口说明中将父类的属性方法事件写在列表中,但是继承类他是可以直接使用父类的属性、方法和事件,因此遇到继承类可使用的方法、属性较少的情况下,可以直接去其父类查找接口。QueryBySQLService对象就是这种情况,它的父类是SuperMap.REST.QueryService,在父类的说明中可以看到processAsync方法。QueryBySQLParameters对象也是属于这种情况,掌握这个帮助文档的查看规律,就可以获取更多有用的接口了。2.3.1SQL查询SQL查询中通过QueryBySQLService对象与SuperMapiServer地图服务进行交互。可以在QueryBySQLService的构造函数中设置与之交互的地图服务的访问地址,设置查询事件对应的监听。注意:URL地址是SuperMapiServer的Map资源服务地址,比如:。2.3.1SQL查询QueryBySQLService的主要属性。1.Events:在QueryService类中处理所有事件的对象,支持两种事件processCompleted、proces
本文标题:06-GIS功能开发
链接地址:https://www.777doc.com/doc-6393796 .html