ArcGIS API for Flex 2.0 有关Fea...

ArcGIS API for Flex 2.0版本,提供来一个FeturrLayer与客户端的图形一起工作。从前面的章节中,你可能已经熟悉了Graphics图层了。 FeatrueLayer继承于GaraphicsLayer,并且提供了额外的功能比如:展示查询结果和选中的元素。 FeatureLayer当然也用于web 编辑。
FeatureLayer不同于Titled和danamic 地图服务图层,因为他们把Geometry信息带到客户端计算机并在客户端绘制。 FeatureLayer潜在的消减往返服务器端的进程。一个客户端可以请求他需要的Features,然后再这些features中进行选择和查询而不用从服务器端获取请求更多个信息。FeatureLayer有一个特殊的属性,它能够响应与用户的交互,比如鼠标的单击和悬停。
一个FeatureLayer尊重每一个查询定义,依赖的比例,和在地图服务中的图层上配置的其他的属性。使用一个featurelayer,你可以访问一个相关的表格,执行查询,显示事件片段,与featureLayer的附属物一起工作。
我如何创建一个FeatureLayer?
一个FeatureLayer就是一个单独的图层,这个图层不是一个地图服务,就是一个Feture服务。 Feature 服务是需要编辑的,但是前面的两者都会hornor任何 在源图文件中陪配置的要素模板,只要你连接到一个10.0或者一个更高版本的ArcGIS 服务。 对于的Server版本,没有任何符号系统可以从server中重新获取,但是如何是它任何任然可以用于一个featureLayer。
选择展示的模型
当你创建一个Feature 服务,你仍然需要指定这些modes中的一个用于重新获取features:在需求模型中,根据他们的需要重新获取features,仅仅对当前视图范围内的的要素发送请求。
Ondemand模型:潜在的要求更多的客户端和服务器端之间的往返。尽管如此,他也保护你重新获取比你需要的更过的Features。
Snapshot模型:当地图图层添加到地图的时候,Snapshot模型将立刻从图层上面获取所有的Features。这就减少了随后的前往服务器的交通,但是如果图层包含很多的features,那么他将会变得非常繁重。 浏览器可能会以因为它需要绘制的features的数目太多而受不了崩溃,或者服务已经达到了每次他能返回的feature数目的极限。 ArcGIS Server 9.3.1默认的返回的结果的数目为500,对于ArcGIS Server 10.0版本的,默认的最大结果返回数目为1000。
对于一些小的数据集或者临时的数据我们可以使用Snapshot模型。
Selection模型:selection模型在初始化的时候没有请求人和的features. Features只有当生成一个selection的时候才会被添加。当你不能或者不想把所有的feature回到的客户端的时候是非常有用的,但是为了某一些原因你想高亮显示一个或者更多的features,比如:编辑,查询,或者访问相关的表格。使用你在feature layer上指定的客户端selection颜色绘制selections。
查询例子:你可以使用dynamic(动态)服务作为你的普通地图描述,但是当执行查询或者鉴定你会想点亮那些被选中的feature。
编辑例子:只有featureLayer中被选中的要素才能在地图中被高亮显示。一旦完成编辑,被选中的部分将会从features上转移出来,用户可以更新dynamic地图服务来查看更新后feature。
注意:不管你为你的feature layer选择哪种显示模型,被选中的要素都在客户端被抓住不放。 比如:如果你正在使用on demand 显示模型,你已经选中了一些Features,从这些被选中的features上面平移走,仍然会导致这些features在客户端是可用的。当你回到原始的显示区域的时候,你的应用程序就不用重新选择要素或者生成服务器端的请求。基于这个原因,一旦这些Select feature不在使用,那么清除这些你选中的features就是一个很好的做法
Feature layers重新获取feature的geometries和属性信息。 当你创建feature layer,你可以设置outFieldsw属性来指定那些属性可以从你的feature中重新获取。也可以使用*获取所有的fields,但是为了减少客户端和服务器之间发送信息的数量,你应该仅仅去请求那些你在你的应用程序中使用的fields。如果你使用feature layer来执行一个查询,查询将会使用(兑现)你设置的输入fields。
Feature layser 能够让你去做下面所有的事情:
编辑:
Feature layer 是你使用WEB APIs编辑features的关键。 包含在APIs中的编辑组件被设计为同feature一同工作。你只能在一个feature layer中执行编辑功能,这个feature layer在一个feature服务中表示一个可以编辑的layer。 查看Editing 获取更多的关乎于这个操作的要求和如何创建一个Feature service。
定义表达式:
有些时候你可能使用那些和特定属性想匹配的features并忽视其他的不匹配的。 在这种情况下,你可以在feature layer上面设置一个定义表达式来仅仅获取那些你需要的。没有一个featureLayer都有一个默认的定义表达式,她来自于在源地图文件中设置的查询定义。
时间定义:
当在snapshot模型中使用一个featurelayer,你能使用在featureLaye上面的timeDefinition来重新获取那些满足某些临时准则的features。 比如:你仅仅想要加载在1930年以前建造的的房屋。
选择并展示
Feature layer支持选择,他代表着用户选择的的一个feature子集,这个子集是用户单独选择的,主要用于:查看、编辑、和分析等目的。 用户可以基于控件或者属性准则来添加feature或者从selection中删除features。可以绘制selections的显示样式和其他的features样式不同,并且Feature layer是这些更加容易。如果你不指定symbol,一个默认的symbol将会使用,
在以前,如果不使用两个Graphics layers 来实现这个功能将是一个挑战 。
一个selection可以作为统计学计算、地理处理工具和图形的输入数据。是之与GIS的交互分析 和研究成为可能。比如:用户可以绘制一个polygon来选择一个大楼的集合,然后单击按钮计算这些大楼潜在的太阳能。 Selection还在一些编辑工作流中起着重要的作用,比如:处于编辑状态的的features高亮显示。
为来生成selection,在FeatruesLayer中使用selectFeatures(),它将一个查询的对象作为一个参数。 如果你有兴趣查询你的features layers而不用添加selections到这个selection set,你可以使用queryFeatures()或者queryRelatedRecords()。使用给上面的任何一种方法,你都不能请求在地图文档或者feature layer中的定义表达式之外的features。
相关的例子
Based on MapServer layer - using default mode (on demand).
FeatureLayer tooltips - using snapshot mode.
Search with FeatureLayer - using definitionExpression and snapshot mode.
InfoWindows for FeatureLayer - using definitionExpression and default mode (on demand).
InfoWindow on Click - using on demand mode.
InfoWindow on MouseOver - using snapshot mode, definitionExpression and graphicAdd.
Related records - using selectFeatures() and selection mode.
Multiple related records - using queryRelatedFeatures() and selection mode.
Clustering - using clusterer, definitionExpression and graphicAdd.
Time rendered 5K run - using FeatureCollection.
Tags: 

延伸阅读

最新评论

发表评论