(十二) WebGIS中矢量图层的设计

文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/服务器

1.前言

在前几章中咱们已经了解了什么是矢量查询、屏幕坐标与地理坐标以前的转换以及要素的设计,有了这些知识,这一章里咱们终于能够进行矢量图层的设计了。函数

在Catalog里建立一个FeatureClass时,咱们可以选择是建立点图层或者线图层或者面图层等。所谓点图层,即该图层中的要素只能是点,其余几个图层顾名思义,也是如此。那么在WebGIS中,咱们一样也能够按照ArcGIS里的这个设计思路来设计咱们的矢量图层,虽然这个方法是确定可行的,可是在实际的业务需求中,若是按照这种点图层等来严格控制的话,代码的灵活性以及简约性会大大的下降。那么到底咱们该如何设计咱们的矢量图层方能达到最好的效果呢?下面咱们来一块儿谈谈。工具

2.提出几个需求

(1).有一段公路须要在地图上显示出来,而且公路上的每一个节点也要明显的标注出来。设计

(2).须要显示出一个消防中队所在的位置,而且将其以服务半径做为缓冲得出的缓冲显示出来。blog

(3).但愿显示出各个关注的人员在地图上的位置,而且鼠标移到人员图标上后,可以有气泡弹出,展现该人员的目前相关信息。继承

3.  分析需求

若是咱们按照ArcGIS中点、线、面图层的思路来设计的话,第一个需求里,咱们就须要设计出两个图层来,一个线图层,一个面图层。一样对第二个需求,咱们也须要专门制做出一个点图层和一个面图层来。事件

如今,咱们可否换一个思路来想呢,咱们可否将点图层、线图层、面图层融合成一个业务图层呢?好比第一个需求,其实就只要线要素和点要素添加到同一个Canvas下便可了,一张以业务来划分的矢量图层就产生了。get

一样,第二个问题的解决思路就是将点要素和面要素(圆要素)整合在一块儿即可。而第三个问题的解决思路就更简单了,只须要添加点(图标)要素便可。在要素的设计中咱们已经详解了每一个要素都是继承UIComponent的,都能监听鼠标事件,因此弹出气泡的需求也便天然而然的能够实现了。博客

4.设计图

 

5.设计流程图

 

6.由一个案例进行详解

这里,咱们以以前提出的需求中的第一个道路显示问题来进行详解。后台

第一步,客户端列出请求参数,好比须要显示的道路的ID号等,而后向矢量服务发送请求。若是是最短路径分析,能够把起始点和终点做为参数,向后台的NA服务发送请求。

第二步,解析服务器返回的数据。得出数据中的各个要素的Geometry和Attribute。而后根据Geometry中的geometryType进行对应的要素的实例化,将Geometry和Attribute做为该实例化要素的属性。在此需求中,首先须要根据返回的线要素数据实例化相同个数的线要素。同时根据线要素的Geometry中的端点信息,实例化出点要素。

第三步,将全部实例化出的点要素和线要素添加到道路图层(Canvas)中,并触发每一个要素的绘画函数。因为每一个要素均有重绘以及坐标转换的内部实现,因此咱们不须要在Canvas中再实现相同功能。

不过,这里我须要说明一个问题,在咱们的自制图层中,咱们仍是须要监听地图事件来进行一些必须的操做的。而这个操做是跟地图平移有关系。不然在地图进行拖动后,该图层上的要素进行重绘时,会发生偏移问题。和上节提到的同样,地图中要素偏移问题我会在之后专门花一节跟你们来探讨。

7.总结

至此,在这个系列中,对栅格图层和矢量图层的设计以及所涉及到的内容我均已讲完了。对于地图的显示和一些基本的业务定制功能实现,我想你们应该都有一些思路了。在接下来的一个系列里,我想和你们一块儿探讨地图工具栏中基本功能的设计实现,好比放大、缩小、平移、全图、I查询、兴趣点查询、定位等。但愿你们持续关注。祝你们节日快乐。

                                                                                                  ----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

活着即是为了受苦,为了历练,为了明白到底咱们须要的是什么。

相关文章
相关标签/搜索