问题的提出:
当我点击地图中的某个点时,会弹出一个提示框显示该点的相应信息。弹出的提示框可以由自己随意定制,包括图表,超连接等。
问题的解决:
首先我参照了esri官网上的samples
1.http://resources.esri.com/help/9.3/arcgisserver/apis/flex/samples/index.html?sample=QueryClickInfoWindow (点击某个州弹出可定制的提示框)
2.http://resources.esri.com/help/9.3/arcgisserver/apis/flex/samples/index.html?sample=IdentifySample (定位到某个点,弹出一个提示框,该提示框为infoSymbol)
第一个例子可能是我要的。但在做的过程中发现。例一中点击某个点必须非常精度的定位到某个坐标。当地图比例尺较小时(可见的地图面积很大),就点不到那个点。
第二个例子中有IdentifyParameters对象可以设置tolerance。表示点击的范围。因此就比较容易定位到我们要的点上。
剩下的办法就是怎么把例1中的弹出可定制的对话框移到例2中。
首先把例1中关于MyInfoWindowRenderer的东西全部移到例2中来。
然后再改myResultFunction这个最终回调方法:
private function myResultFunction(results:Array, clickGraphic:Graphic = null):void
{
trace("results:"+results);
if (results && results.length > 0)
{
var result:IdentifyResult = results[0];
var resultGraphic:Graphic = result.feature;
resultGraphic.symbol = smsIdentify;
resultGraphic.infoWindowRenderer=myInfoWindowRenderer;
graphicsLayer.clear();
graphicsLayer.add(resultGraphic);
lastIdentifyResultGraphic = resultGraphic;
trace("clickGraphic:"+clickGraphic);
clickGraphic.symbol = new InfoSymbol(); // use default renderer
clickGraphic.symbol=smsIdentify;
clickGraphic.infoWindowRenderer = myInfoWindowRenderer;
clickGraphic.attributes = resultGraphic.attributes;
}
}
这个虽然可以弹出定制提示框,但需要点击两次。
后来在esri官网的user forums找到一个解决方案:
http://forums.esri.com/Thread.asp?c=158&f=2421&t=270117
把myResultFunction改成如下所示:
private function myResultFunction(results:Array, clickGraphic:Graphic = null):void
{
trace("results:"+results);
if (results && results.length > 0)
{
var result:IdentifyResult = results[0];
var resultGraphic:Graphic = result.feature;
resultGraphic.symbol = smsIdentify;
//resultGraphic.infoWindowRenderer=myInfoWindowRenderer;
graphicsLayer.clear();
graphicsLayer.add(resultGraphic);
lastIdentifyResultGraphic = resultGraphic;
var mapPoint:MapPoint = resultGraphic.geometry as MapPoint;
var myInfoPopup:MyInfoPopup = new MyInfoPopup;
myInfoPopup.MRID = resultGraphic.attributes.MRID;
myInfoPopup.NAME = resultGraphic.attributes.NAME;
myInfoPopup.ALIASNAME = resultGraphic.attributes.ALIASNAME;
myInfoPopup.LONGITUDE = resultGraphic.attributes.LONGITUDE;
myInfoPopup.LATITUDE = resultGraphic.attributes.LATITUDE;
myMap.infoWindow.label = resultGraphic.attributes.ALIASNAME;
myMap.infoWindow.content = myInfoPopup;
myMap.infoWindow.show( mapPoint );
trace("clickGraphic:"+clickGraphic);
//clickGraphic.symbol = new InfoSymbol(); // use default renderer
// clickGraphic.symbol=smsIdentify;
// clickGraphic.infoWindowRenderer = myInfoWindowRenderer;
// clickGraphic.attributes = resultGraphic.attributes;
}
}
MyInfoPopup.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
[Bindable]
public var MRID:String;
[Bindable]
public var NAME:String;
[Bindable]
public var ALIASNAME:String;
[Bindable]
public var LONGITUDE:String;
[Bindable]
public var LATITUDE:String;
]]>
</mx:Script>
<mx:VBox backgroundColor="0xEEEEEE" >
<mx:Label text="MRID : {MRID}"/>
<mx:Label text="编码: {NAME}"/>
<mx:Label text="名称: {ALIASNAME}"/>
<mx:Label text="经度: {LONGITUDE}"/>
<mx:Label text="纬度: {LATITUDE}"/>
</mx:VBox>
</mx:Canvas>
分享到:
相关推荐
arcgis api for flex的环境搭建
ArcGIS API for Flex实现在Flex程序中浏览自己的ArcGIS.Server.9.3中发布的地图,一个最基本的入门例子。 目錄 一、ArcGIS.Server.9.3和ArcGIS API for Flex实现基本的地图浏览(一).................................
arcgis api for flex 开发入门(三)地图浏览控件的使用
arcgis api for js 自定义弹出信息提示框,可以根据自己需要直接修改css样式即可。
arcgis api for flex 开发入门(一)环境搭建(二)map 的创建。。。。
ArcGIS API for Flex 2.5 build date 2011-11-30 ======================= This file contains the ArcGIS Flex API Library (the swc file), skins and sample code. =============== Getting Started ==========...
ArcGIS API for Flex 3.0离线文档
ArcGIS API for Flex 3.7离线文档 来源:官方3.7 Reference 文档整理
arcgis api for flex v3.4 离线版 大神制作拿来分享
非常方便入门或进阶学习,免去复制粘贴的麻烦和出错。 基于目前最新版本arcgis api for flex 3.3(可从http://download.csdn.net/detail/haoamz14/5327205下载),包含官网 ...
ARCGIS API FOR FLEX,彩页,中文
ArcGIS API for Flex 2.5官方离线文档 本文档来源:http://help.arcgis.com/en/webapi/flex/apiref/index.html 个人整理的离线版本,再也不用在像老牛车样的网上看了,分享给大家O(∩_∩)O哈哈~
ArcGIS API for Flex实现在Flex程序中浏览自己的ArcGIS.Server.9.3中发布的地图,一个最基本的入门例子。 目錄 一、ArcGIS.Server.9.3和ArcGIS API for Flex实现基本的地图浏览(一).................................
ArcGIS API for Flex用于富互联网应用程序RIA(Rich Internet Applications)的开发,通过ArcGIS API for Flex可以将ArcGIS Server提供的地图资源和其它资源(ArcGIS Online)嵌入到Web应用中。 使用它可以做什么: ...
ArcGIS API for Flex 2.0.chm ArcGIS API for Flex 2.0.chm
ArcGIS API for Flex应用开发
arcgis flex 地图开发参考最新(3.6)API文档,
ArcGIS API for Flex 是一个强大的框架,利用它可以基于ArcGIS Server建立漂亮的富互联网应用程序 rich internet applications (RIAs) ,优点是运行速度快,用户体验效果会比目前的WEBGIS好。 ESRI的 Flex 资源中心...
压缩文件中包含ArcGIS API for Flex 1.1 arcgis_api_for_flex_3_3 arcgis_api_for_flex_3_3.swc
包含ArcGIS api For Flex2.0版到3.4版的所有源代码和库文件