`

arcgis api for flex 弹出定制提示框

    博客分类:
  • Flex
阅读更多
问题的提出:
当我点击地图中的某个点时,会弹出一个提示框显示该点的相应信息。弹出的提示框可以由自己随意定制,包括图表,超连接等。
问题的解决:
首先我参照了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>
分享到:
评论
1 楼 mineguai 2012-01-08  
如果是在widget中有一个按钮,点击按钮以后弹出一个框 要怎么响应这个事件呢。。。

相关推荐

    arcgis api for flex 开发入门(一)环境搭建

    arcgis api for flex的环境搭建

    arcgis api for flex 开发入门(三)地图浏览控件的使用

    arcgis api for flex 开发入门(三)地图浏览控件的使用

    ArcGIS API for Flex library

    ### ArcGIS API for Flex 实现地图浏览及相关功能详解 #### 一、ArcGIS.Server.9.3 和 ArcGIS API for Flex 实现基本的地图浏览 **目的:** ArcGIS API for Flex 的主要目的是让开发者能够在 Adobe Flex 应用程序...

    arcgis api for js 自定义弹出信息提示框

    总之,通过深入理解ArcGIS API for JavaScript 和CSS,我们可以创建出符合项目需求的个性化弹出信息提示框,提升地图应用的交互性和视觉效果。这个过程中,良好的代码组织和文档记录也非常重要,以便于后期的维护和...

    Arcgis Api for flex 3.6

    通过深入理解和熟练运用ArcGIS API for Flex 3.6,开发者能够创建出具有专业水准的GIS应用,满足从企业级数据可视化到公众信息发布的多种需求。结合实际项目需求,灵活运用API提供的工具和方法,开发者可以构建出...

    ArcGIS API for Flex 2.5

    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 概述 - **定义与背景**:ArcGIS API for Flex 是一款由 Esri 提供的用于构建高性能地理信息系统 (GIS) 的开发工具包。它允许开发者利用 ...

    ArcGIS api for Flex2.0-3.4

    《ArcGIS API for Flex 2.0-3.4:深度探索与应用解析》 ArcGIS API for Flex是Esri公司推出的一款强大的地理信息系统(GIS)开发工具,它结合了Flex的灵活性和ArcGIS的强大地图服务功能,为Web应用程序开发者提供了...

    ArcGIS API for Flex 3.7离线文档

    ArcGIS API for Flex 3.7离线文档 来源:官方3.7 Reference 文档整理

    arcgis api for flex v3.4 离线版

    arcgis api for flex v3.4 离线版 大神制作拿来分享

    arcgis-samples-flex-develop(arcgis api for flex 3.3版本的例子)

    非常方便入门或进阶学习,免去复制粘贴的麻烦和出错。 基于目前最新版本arcgis api for flex 3.3(可从http://download.csdn.net/detail/haoamz14/5327205下载),包含官网 ...

    arcgis_api_for_flex

    《ArcGIS API for Flex:构建地理信息系统Web应用的利器》 ArcGIS API for Flex是Esri公司提供的一款用于构建富互联网应用程序(Rich Internet Applications,RIA)的开发工具,专门针对Flex平台设计,允许开发者...

    ArcGIS API for flex1.1-3.3 CHM

    《ArcGIS API for Flex 1.1-3.3 CHM》是针对ArcGIS平台的Flex接口开发的详细文档集合,旨在帮助开发者更好地理解和运用ArcGIS API在Flex环境中进行地图和地理信息系统应用的开发。这份资源包含了从1.1版本到3.3版本...

    ArcGIS API for Flex library(整理)

    根据给定的文件标题、描述、标签以及部分内容,本文将详细介绍如何使用ArcGIS API for Flex在Flex应用程序中实现与ArcGIS Server 9.3交互的各种功能。这些功能涵盖了地图浏览的基础到高级应用,如图层管理、图形绘制...

    ArcGIS API for Flex 2.5官方离线文档

    ArcGIS API for Flex 2.5官方离线文档 本文档来源:http://help.arcgis.com/en/webapi/flex/apiref/index.html 个人整理的离线版本,再也不用在像老牛车样的网上看了,分享给大家O(∩_∩)O哈哈~

    arcgis api for flex 3.3

    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 2.0.chm

    ArcGIS API for Flex

    《ArcGIS API for Flex:构建交互式WebGIS的利器》 ArcGIS API for Flex是Esri公司提供的一款用于开发交互式Web GIS应用的强大的开发工具,它基于Adobe Flex技术,结合了地理信息系统(GIS)的强大功能与富互联网...

Global site tag (gtag.js) - Google Analytics