zoukankan      html  css  js  c++  java
  • ArcGIS Server 9.3 ADF开发,动态文字标注 (文字来自图层资源)

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

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

    <scripttype="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);

  • 相关阅读:
    【转】多线程:深入了解线程同步lock,Monitor,Mutex,同步事件和等待句柄(中)
    Mono初接触
    计算机颜色格式( 8位 16位 24位 32位色)
    我爱源代码
    Linux小白教程: tar的几种常用格式
    Linux小白教程:查看当前Linux的发行版本、内核(kernel)版本
    10大糟糕预测:
    一日编程小悟
    Linux小白教程:vi(shell文本编辑器)保存、退出命令
    C结构体中的函数指针与函数
  • 原文地址:https://www.cnblogs.com/thsgar/p/thsgar.html
Copyright © 2011-2022 走看看