zoukankan      html  css  js  c++  java
  • 点线面查询闪烁

    ArcGIS Server点线面查询闪烁

    基本思路:

    1. 首先做查询,按条件查找出地理信息DoSearch(string txtvalue)
    2. 在服务器端将经纬度坐标转换为屏幕坐标,并且用回调方式向客服端的二维数组数组写入给点经纬度以及其他信息

    //将点的经纬度坐标存入数组中,以备刷新地图时重绘各点

                            string ptcollection=" ptcollection["+i+"]=new Array();";

                            ptcollection +="ptcollection["+i+"][0]="+geomPt.X+";";

                            ptcollection += "ptcollection["+i+"][1]="+geomPt.Y+";";

                            ptcollection += "ptcollection[" + i + "][2]='" + mc + "';";

                            i++;

                            CallbackResult ptc = new CallbackResult(null, null, "javascript", ptcollection);

                            Map1.CallbackResults.Add(ptc);

    //将经纬度坐标转化为屏幕坐标

                        System.Drawing.Point pt= geomPt.ToScreenPoint(Map1.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToScreen));

     

    1. 在客服端以gif图片绘制出各点(DrawPt(x,y,mc)),其中线取中点,面取的是包络线矩形的中点

    function DrawPt(x,y,mc)

            {

                //动态获取点的ID号

                var id=document.body.getElementsByTagName("pt").length;

                var pt=document.createElement("pt");

                pt.style.position="absolute";

                pt.style.left=x;

     

              // pt.style.background="green";

                pt.style.top=y;

                pt.style.zIndex=110;

                pt.setAttribute("align","center");

                pt.onclick = function(){pointClick1(mc,x,y)};

                pt.id=id;

                pt.value=mc;

    //         pt.style.visibility="hidden";

                document.body.appendChild(pt);

                document.getElementById('divCache').style.display='none';

            }

     

    4. 做地图移动,放大缩小时gif图片跟着地图移动

            function RedirectToScreen(mapxmax,mapxmin,mapymax,mapymin)

            {

                document.getElementById("div").style.visibility="hidden";

                document.getElementById('divCache').style.display='';

    //            document.all.<%=tableCache.ClientID%>.style.visibility="visible";

                if(document.body.getElementsByTagName("pt").length!='0')

                {

                    var ptCount=document.body.getElementsByTagName("pt").length;

                    //首先删除以前所有的点

                    for(var i=0;i<ptCount;i++)

                    {  

                        var img=document.getElementById(i);

                        document.body.removeChild(img);

                    }

                }

                var screenWidth=document.body.clientWidth;

                var screenHeight=document.body.clientHeight;

                for(var i=0;i<ptcollection.length;i++)

                {  

                    var x=ptcollection[i][0];

                    var y=ptcollection[i][1];

                    var mc=ptcollection[i][2];

                   

                    if(x<mapxmax&&x>mapxmin&&y<mapymax&&y>mapymin)

                    {

                        screenx=parseInt((screenWidth/Math.abs(mapxmax-mapxmin))*Math.abs(x-mapxmin));

                        screeny=parseInt(screenHeight-(screenHeight/Math.abs(mapymax-mapymin))*Math.abs(y-mapymin));

                      

                        DrawPt(screenx,screeny,mc);

                   }

                }

               document.getElementById('divCache').style.display='none';

            }

    1. 控制图片只有在地图范围内时才显示if(x<mapxmax&&x>mapxmin&&y<mapymax&&y>mapymin)

    缺点(不足):由于线和面用点绘制闪烁很慢,所以这里以中点代贴,以待改进

  • 相关阅读:
    模块cv2的用法
    调整弹出对话框在ASP.NET应用程序的大小
    xaf 自定义登陆页
    xaf 修改主页logo
    显示一个列表视图图表
    双击直接编辑状态
    xaf 富文本框添加方法
    用户 'NT AUTHORITYIUSR' 登录失败
    C# 中的INotifyPropertyChanged
    线程间操作无效: 从不是创建控件“txtreceive”的线程访问它。
  • 原文地址:https://www.cnblogs.com/gisdream/p/1456989.html
Copyright © 2011-2022 走看看