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);

  • 相关阅读:
    SDN私享汇(十一):OvS 架构介绍及开发实践
    SDN控制器之OVN实验六:配置集成容器的OVN网络
    OVN简介
    使用ovn-trace分析OVN 逻辑流表(Logical Flow)
    Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(8)
    Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
    理解OpenShift(1):网络之 Router 和 Route
    linux-bonding——
    Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]
    [连载型] Neutron系列(20):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)【下】
  • 原文地址:https://www.cnblogs.com/thsgar/p/thsgar.html
Copyright © 2011-2022 走看看