zoukankan      html  css  js  c++  java
  • ArcGIS Server 中的动态文字标注

     

      此处所说的动态标注,是指动态显示地图上某一要素的动态信息。还是通过熟悉的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);

    一起学习GIS及其二次开发,一起进步!
  • 相关阅读:
    js实现继承的5种方式
    JavaScript文件操作(1)-基础
    12 个免费在线的 Web 网站性能测试工具
    server r2 系统更新文件清理
    在C#中,Json的序列化和反序列化的几种方式总结
    ES6,新增数据结构Set的用法
    ES6中有关数组的一些新操作
    vue中mode hash 和 history的区别
    POST和GET的区别
    前端的细节
  • 原文地址:https://www.cnblogs.com/tuncaysanli/p/1424009.html
Copyright © 2011-2022 走看看