加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

arcgis api for flex开发Query查询定位与中心定位查询功能 弹出

发布时间:2020-12-15 04:47:09 所属栏目:百科 来源:网络整理
导读:??? 一直以来都是准备基础数据,发布各种地图服务(诸如各种mapserver基础地图服务、查询服务,NA服务-路径分析服务,Geocode server,专题地图服务等等),最近终于闲下来,可以做点自己一直想做的事情了。自己发布服务,自己coding调用。主要功能是利用arc

??? 一直以来都是准备基础数据,发布各种地图服务(诸如各种mapserver基础地图服务、查询服务,NA服务-路径分析服务,Geocode server,专题地图服务等等),最近终于闲下来,可以做点自己一直想做的事情了。自己发布服务,自己coding调用。主要功能是利用arcgis api for flex开发,实现Query查询定位,与中心定位查询功能,并 弹出定制提示框(气泡显示详细信息)。

???? 先从最基本的开始,参考参考官网上面的sample,开始着手做一个查询与定位的Demo,先看效果,然后再详细简单说明一下步骤。如下图所示:

(1)地名搜索


(2)地名搜索结果中心定位


(3)图层查询

图层4为草莓采摘点图层,所示区域为曹庵镇草莓采摘点分布。


(4)详细信息查询

点击查看任意一个曹庵草莓采摘点查看详细信息。


??????? 如上各图所示,基本上分为如下几个部分:

1、加载与显示基础地图(发布的基础底图地图),利用ArcGISTiledServiceLayer加载切片地图。

<esri:Map id="myMap">			
	<esri:ArcGISTiledMapServiceLayer id="map"
	url="http://192.168.0.1:8399/arcgis/rest/services/testmap/MapServer"/>
</esri:Map>

2、地名搜索与搜索结果中心定位(图1和图2)

在申明描述中(? <fx:Declarations>......</fx:Declarations>??? )定义搜索相关内容。

	<!-- Find Task -->
	<esri:FindTask id="findTask"
			executeComplete="FindTask(event)"
			url="http://192.168.0.1:8399/arcgis/rest/services/LayerData/MapServer"/>
?? ???? 
?? ??? ?<esri:FindParameters id="myFindParams"
?? ??? ??? ??? ??? ??? ??? ? contains="true"
?? ??? ??? ??? ??? ??? ??? ? layerIds="[0]"
?? ??? ??? ??? ??? ??? ??? ? outSpatialReference="{map.spatialReference}"
?? ??? ??? ??? ??? ??? ??? ? returnGeometry="true"
?? ??? ??? ??? ??? ??? ??? ? searchFields="[NAME]"
?? ??? ??? ??? ??? ??? ??? ? searchText="{fText.text}"/>
为了完成输入字符串的搜索结果显示和动作相应,还需要写执行函数。(放置在<fx:Script>中)

关于搜索结果的定位,首先要在搜索函数(FIndTask)中讲搜索结果进行存储,定义一个FeatureSet变量,FeatureSet的存储和使用方法如下说明。

public?? ?var returnFeatureSet:FeatureSet=new FeatureSet(); //定义

returnFeatureSet.features = event.findResults; //存储查询结果

var graphic:Graphic=returnFeatureSet.features[selectdex].feature;//按照DataGrid点击索引号,对存储结果进行读取 。

以下是几个函数实现主体:

private function FindTask(event:FindEvent):void
			{
				myGraphicsLayer.clear();
				var graphic:Graphic;
				
				resultSummary.text = "Found " + event.findResults.length + " results.";
				
				var resultCount:int = event.findResults.length;
				
				for (var i:Number = 0; i < resultCount; i++)
				{
					graphic = event.findResults[i].feature;
					graphic.toolTip = event.findResults[i].value;

					graphic.symbol = picsymbol0;
					myGraphicsLayer.add(graphic);
				 }
				//saved in FeatureSet
				returnFeatureSet.features =  event.findResults;			
			}
		
			protected function DataGrid_itemClickEvent(event:MouseEvent):void
			{			
				var selectdex:Number= dgrid.selectedIndex;
				var graphic:Graphic=returnFeatureSet.features[selectdex].feature;
				
				var geomrtry:Geometry=graphic.geometry;
				
				var newppoint:MapPoint=geomrtry as  MapPoint;
				graphic.symbol=picsymbol0;

				myMap.level=7;
				myMap.centerAt(newppoint);				
				
				var point:MapPoint=geomrtry.extent.center;
				var extent:Extent=new Extent();
				myGraphicsLayer.add(graphic);
				
				var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(returnFeatureSet.features[selectdex]);
				if (graphicsExtent)
				{
					myMap.extent = graphicsExtent;
				}
			}

3 图层查询(图3)

加载图层查询服务

<esri:FeatureLayer id="features"
		outFields="[*]"
		url="http://192.168.0.96:8399/arcgis/rest/services/QueryData/MapServer/{FeaturePicker.selectedIndex+1}">
图层选择采用DropList下拉菜单(主意设定featurepicker.selectedIndex初始值为-1)

<s:DropDownList id="featurePicker" width="178">
				<s:ArrayList>
					<fx:String>草莓采摘点</fx:String>
					<fx:String>葡萄采摘点</fx:String>
					<fx:String>西瓜采摘点</fx:String>
					<fx:String>桃子采摘点</fx:String>
				</s:ArrayList>
			</s:DropDownList>							
图层图标渲染:

<esri:renderer>
					<esri:ClassBreaksRenderer attribute="layerID">
						<esri:ClassBreakInfo maxValue="2" minValue="1" symbol="{picsymbol1}"/>
						<esri:ClassBreakInfo maxValue="3" minValue="2" symbol="{picsymbol2}"/>
						<esri:ClassBreakInfo maxValue="4" minValue="3" symbol="{picsymbol3}"/>
					</esri:ClassBreaksRenderer>
				</esri:renderer>

4 对象详细信息查询

使用infoWindowRenderer渲染弹出定制提示框(这个请查看官网例子http://help.arcgis.com/en/webapi/flex/samples/index.html#/InfoWindows_for_FeatureLayer/01nq00000057000000/)

<esri:infoWindowRenderer>
					<fx:Component>
						<esri:LabelDataRenderer>
							<esri:label>{data.NAMEC}</esri:label>
							<s:BorderContainer  id="infowindow" backgroundColor="white"
												borderColor="black"
												color="green"
												cornerRadius="5"
												minHeight="0"
												minWidth="0">
								<s:layout>
									<s:VerticalLayout paddingBottom="5"
													  paddingLeft="5"
													  paddingRight="5"
													  paddingTop="5"/>
								</s:layout>
								
								<s:Label>联系人:{data.RDNAME} </s:Label>
								<s:Label>电话:{data.STAKE} </s:Label>
								<s:Label>地址:{data.RDNUMBER} </s:Label>
								<s:Label>网址:{data.REMARK} </s:Label>
							</s:BorderContainer>						
						</esri:LabelDataRenderer>
					</fx:Component>
				</esri:infoWindowRenderer>


若有需要mxml源码文件,请留邮箱或者直接QQ联系我(2603508359)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读