首页 > 开发 > 综合 > 正文

BlueViewer 地图加载分析(C#)

2024-07-21 02:26:58
字体:
来源:转载
供稿:网友
国内最大的酷站演示中心!
blueviewer是基于.net link进行arcims二次开发的一个实例,里面包含了webgis最基本的一些功能。关于arcims结构及其简介可以参考我的另外一篇随笔《arcims体系结构》。关于.net link连接器的介绍可以参考《arcims连接器--.net link使用方法》。mars写了一篇《浅析arcims》,对blueviewer做了简单的分析。

    使用.net link进行arcims二次开发并不复杂,但不少刚刚接触gis朋友面对大量javascript和arcxml,加上对webgis运行机制不了解,还是感觉无从下手。这篇随笔将对blueviewer地图加载显示机制进行剖析,看看整个代码的运行过程,代码语言使用c#。

    使用html、arcexplorer、javaviewer客户端进行开发,需要在客户端使用javascript对arcxml进行编写与封装,虽然arcxml的传输过程变得相对简单,但对人的耐力绝对是个莫大的考验,因此一般建议使用arcims的各种连接器进行二次开发,blueviewer就是基于.net link进行二次开发的一个实例。

    连接器的主要作用,就是根据客户端的请求,将请求封装为arcxml传输到arcims应用服务器,以及将arcims应用服务器发送回来的结果提取出来(一般为图片),发送给客户端,响应用户请求。在客户端,用户对地图的操作及地图的显示还是由javascript来控制,但相对于在客户端编写arcxml来说,其工作量还是要减轻不少,开发方法更符合oop,其中.net link相对来说在面向对象方面做的不怎么好,但使用asp.net进行开发,.net link是不二的选择。

    下面是对程序启动地图显示过程的分析
----------------------------------------
 
    在default.aspx中有五个隐藏域,hvminx、hvminy、hvmaxx、hvmaxy、hvmappage,前四个对象描述当前地图显示范围,最后一个返回地图显示的url。程序启动第一步就是初始化这些值,在default.aspx.cs中有详细描述。

protected void page_load(object sender, system.eventargs e)
{
  
if (!(ispostback))
  
{
    session.add(
"valid_user"true);
    hvmappage.value 
= "makemap.aspx";
  }

  
if ((request.querystring["xmin"== null | request.querystring["ymin"== null |
      request.querystring[
"xmax"== null | request.querystring["ymax"== null))
  
{
    hvminx.value 
= system.configuration.configurationsettings.appsettings["default_extent_xmin"];
    hvminy.value 
= system.configuration.configurationsettings.appsettings["default_extent_ymin"];
    hvmaxx.value 
= system.configuration.configurationsettings.appsettings["default_extent_xmax"];
    hvmaxy.value 
= system.configuration.configurationsettings.appsettings["default_extent_ymax"];
  }

  
else
  
{
    hvminx.value 
= request.querystring["xmin"];
    hvminy.value 
= request.querystring["ymin"];
    hvmaxx.value 
= request.querystring["xmax"];
    hvmaxy.value 
= request.querystring["ymax"];
  }

}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表