呵呵,这个名字有点大,事实上,就是想讲一下OpenScales里面Map是怎么显示出来的。
1. FxMap.as
你在flex,mxml中里面用到的Map:
<os:Map id="fxmap"width="100%" height="100%"zoom="12" centerLonLat="4.833,45.767">
事实上是FxMap,怎么把FxMap映射为类库中的map,大家可以看一下openscales-fx\src\main\flex\META-INF\manifest.xml文件,看懂了,以后自己做的类可以用用这样映射,方便,而且可以隐藏代码结构。
FxMap继承自Container,用来将Map包含进来,另外好像是为了适应flex的编写结构,能够直接通过Mxml中引入方便,加入的FxMap。
2. Map.as
Map继承自Sprite,实际上可以理解为一个Layer的管理器,大家都知道Map,就是多个Layer重叠起来的结构,只不过这里的Layer加到了Map里面的layerContainer中。
3.layerContainer
继承自一个DraggableSprite,也就是一个可以拖动的layer。
4.layer
我们在他的例子中,应用的layer添加方式,实际上也是对应于FxLayer的,FxLayer和layer的关系和FxMap和map的关系类似吧。
例如:<os:Mapnik name="Mapnik" isBaseLayer="true" proxy="http://openscales.org/proxy.php?url="/>
5. RemoteImageLayer 和 FeatureLayer
layer分为两类:
一类是从服务器端的图片作为源,显示来自服务器端图片的layer,都是RemoteImageLayer ,可以理解为组织来自后台数据的图层,那么我们平时接触的ogc标准的wms图层,tile(瓦片图层),esri的ims,ags服务图层,都属于这类图层。
另外一类是在前台绘制的图层,FeatureLayer就是用于显示这些的。我们有时候绘制图层,或者在知道坐标,样式,显示地块的时候,再就是高亮,强调地块的时候,用这个就比较多。
6. Feature
Feature对应于FxFeature,这个不说了,代码结构里面的feature,style的类,都是用来构建feature的,Feature都是用来显示在FeatureLayer上的。和RemoteImageLayer 无关系。
7. Grid.as
和RemoteImageLayer有关的就是这个了,Grid,故名思议,就是块,那么我们知道对于瓦片图层,就是多块组成了视野范围内的图层,而IMS,WMS之类的服务,都是一大块图片,就是视野范围图层啦。因此Grid.as分为SingleGrid和MultiGrid(这个我起的名,别找这个类),SingleGrid 好办,范围变了,刷新,重新从后台请求就OK,二对于Tile服务,那就是MultiGrid了,那么Tile命名规则不同,组图层的方法就不同。这个也是大家问的挺多的问题。这个以后专门讲一下吧。
8. Tile.as
就是瓦片了,这里不多说了。
好了,就图层显示来说,由下到上就是组成顺序,由上到下就是怎么说,容器的包含顺序?反正你应该懂得。