问题的提出:
当我点击地图中的某个点时,会弹出一个提示框显示该点的相应信息。弹出的提示框可以由自己随意定制,包括图表,超连接等。
问题的解决:
首先我参照了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 开发入门(三)地图浏览控件的使用
### ArcGIS API for Flex 实现地图浏览及相关功能详解 #### 一、ArcGIS.Server.9.3 和 ArcGIS API for Flex 实现基本的地图浏览 **目的:** ArcGIS API for Flex 的主要目的是让开发者能够在 Adobe Flex 应用程序...
总之,通过深入理解ArcGIS API for JavaScript 和CSS,我们可以创建出符合项目需求的个性化弹出信息提示框,提升地图应用的交互性和视觉效果。这个过程中,良好的代码组织和文档记录也非常重要,以便于后期的维护和...
通过深入理解和熟练运用ArcGIS API for Flex 3.6,开发者能够创建出具有专业水准的GIS应用,满足从企业级数据可视化到公众信息发布的多种需求。结合实际项目需求,灵活运用API提供的工具和方法,开发者可以构建出...
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 应用开发知识点 #### 一、ArcGIS API for Flex 概述 - **定义与背景**:ArcGIS API for Flex 是一款由 Esri 提供的用于构建高性能地理信息系统 (GIS) 的开发工具包。它允许开发者利用 ...
《ArcGIS API for Flex 2.0-3.4:深度探索与应用解析》 ArcGIS API for Flex是Esri公司推出的一款强大的地理信息系统(GIS)开发工具,它结合了Flex的灵活性和ArcGIS的强大地图服务功能,为Web应用程序开发者提供了...
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:构建地理信息系统Web应用的利器》 ArcGIS API for Flex是Esri公司提供的一款用于构建富互联网应用程序(Rich Internet Applications,RIA)的开发工具,专门针对Flex平台设计,允许开发者...
《ArcGIS API for Flex 1.1-3.3 CHM》是针对ArcGIS平台的Flex接口开发的详细文档集合,旨在帮助开发者更好地理解和运用ArcGIS API在Flex环境中进行地图和地理信息系统应用的开发。这份资源包含了从1.1版本到3.3版本...
根据给定的文件标题、描述、标签以及部分内容,本文将详细介绍如何使用ArcGIS API for Flex在Flex应用程序中实现与ArcGIS Server 9.3交互的各种功能。这些功能涵盖了地图浏览的基础到高级应用,如图层管理、图形绘制...
ArcGIS API for Flex 2.5官方离线文档 本文档来源:http://help.arcgis.com/en/webapi/flex/apiref/index.html 个人整理的离线版本,再也不用在像老牛车样的网上看了,分享给大家O(∩_∩)O哈哈~
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:构建交互式WebGIS的利器》 ArcGIS API for Flex是Esri公司提供的一款用于开发交互式Web GIS应用的强大的开发工具,它基于Adobe Flex技术,结合了地理信息系统(GIS)的强大功能与富互联网...