ArcGIS Server 中的动态文字标注(及其他图形)

转载 2012年03月27日 16:39:25

 此处所说的动态标注,是指动态显示地图上某一要素的动态信息。还是通过熟悉的Callback机制来实现。由于获取地图上某一要素的动态信息过程可能不同。本文只描述过程以及共享部分代码。

1、首先写一个javascript函数用来间隔一定时间不停的执行,以保证要素信息的动态性。另外需要在MapResourcemanager 中加入一临时图层(GraphicsLayer),标注的信息就在此图层上显示。

<script type="text/javascript">

        function Show() {

           SetCustomOperation(FSShow)    // Callback前台函数     

        }

 //每间隔20秒执行一次show函数

        Ext.onReady(function() {

          setInterval(Show, 20000);

        });   

function SetCustomOperation(sVal)

       {

            var message ='';

            message +=',' + sVal;

            var context ='Map1'

            <%=sCallBack%>              

   }  

  </script>

2、后台首先要从数据库去动态获取要标注的地图要素的实时信息以及获取到此要素的坐标值。接着就是就是标注了。主要代码如下:

 

 ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer glayer = null;

               //查找ElementGraphicsLayer

 ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality Tempfunc = map.GetFunctionality("TempEle"); // TempEle为动态资源图层名

 ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapResource  gResource = Tempfunc.Resource as ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapResource;

 

foreach (System.Data.DataTable dt in gResource.Graphics.Tables)

 {

    if (dt is ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)

     {

        glayer = (ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dt;

         break;

     }

 }

    //如果没有ElementGraphicsLayer就新增加一个ElementGraphicsLayer

 if (glayer == null)

   {

       glayer = new ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();

      gResource.Graphics.Tables.Add(glayer);

   }

              

 ESRI.ArcGIS.ADF.Web.Geometry.Point point = new ESRI.ArcGIS.ADF.Web.Geometry.Point(X, Y);

//此处X,Y即为需要标注的某一点要素的X,Y坐标值

 //这里我看过,可以加入更多的图形

 ESRI.ArcGIS.ADF.Web.Display.Symbol.TextMarkerSymbol pMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.TextMarkerSymbol();

 pMarkerSymbol.Text = string.Format("{0}", str); 

/*此处str即为标注要素的动态信息字符串,此处是通过间隔一定时间从数据库获取的*/

 pMarkerSymbol.Font.Size = 20;

 pMarkerSymbol.Transparency = 0;

 ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement ge1 = new ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(point, pMarkerSymbol);

 glayer.Add(ge1);

 Map1.RefreshResource(gResource.Name);


利用ArcGIS Server动态图层改变地图服务的图层样式

ArcGIS Server10.1及以后的版本新增了动态服务的新特性,利用动态服务,用户可以通过api轻松的在本地对地图服务进行修改,如图层样式,向地图服务添加本地数据。最近刚好一个项目,需要用户可以...

arcgis server 动态创建地图服务

  • 2011年05月15日 16:23
  • 15KB
  • 下载

海量图层管理的新希望——ArcGIS Server 动态图层服务

1      众里寻他千百度 “海量数据的发布与共享一直是GIS应用系统建设中的难题,尤其是当数据还在不断增加的时候……”,像是被针扎了般,小崔猛然一惊。然 后他全神贯注,紧紧盯着大屏幕,生怕错...

ArcGIS Server 动态生成缓存

作者:liyuanxi…    文章来源:ESRI China    点击数:2548    更新时间:2009-9-2 摘要:使用ArcGIS Server做地图发布,为了提升浏览性能,通常会使用...

arcgis server10.1 新功能动态图层渲染

研究了一个arcgisserver10.1动态图层渲染的问题。     环境:       服务器: window server 2008 64位        安装arcgis:    arc...
  • cd11907
  • cd11907
  • 2013年07月30日 12:06
  • 1506

动态发布MXD到ArcGIS Server(包括WMS.WCS,WFS,KML)

private void button2_Click(object sender, EventArgs e)         {             if(this.textBox1.Text...

ArcGIS Server代码动态创建发布服务(MapServer,ImageServer)

#region 创建地图服务     private bool CreateServices(string MapPath, string ServerName)//ServerName为地图服务设...

ArcGIS Server代码动态创建发布服务(MapServer,ImageServer)

ArcGIS Server动态创建MapServer #region 创建地图服务 private bool CreateServices(string MapPath, string ...

基于ArcGIS Server的ADF的异步回调机制实现基于动态数据显示问题

在高亮显示、选择中、或者动态数据的时候我们都会使用到GraphicsLayer中的ElementGraphicsLayer或者FeatureGraphicsLayer,我们如何增加动态点以及考虑回调的...

海量图层管理的新希望——ArcGIS Server 动态图层服务

1      众里寻他千百度 “海量数据的发布与共享一直是GIS应用系统建设中的难题,尤其是当数据还在不断增加的时候……”,像是被针扎了般,小崔猛然一惊。然 后他全神贯注,紧紧盯着大屏幕...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArcGIS Server 中的动态文字标注(及其他图形)
举报原因:
原因补充:

(最多只允许输入30个字)