摘要:
这篇文章我们主要讲述如何通过阅读分析MapGuide的源代码对MapGuide浏览器所接受参数的分析。
如果你也正在困惑于MapGuide Ajax Viewer或者Fusion Viewer究竟可以使用那些参数,那么请你继续阅读。
 

我们首先把Ajax Viewer和Fusion Viewer可用的参数列表列出来:

Ajax Viewer中可用的参数为:

WEBLAYOUT
LOCALE
SESSION
USERNAME
PASSWORD

Fusion Viewer可用的参数为:

Session
ApplicationDefinition

当然了,首先我们还是先简单介绍一下我们在基于MapGuide开发WebGIS应用程序时是怎样调用MapGuide 浏览器的。

在使用Ajax Viewer时:

<%@ Page Language="C#" %>
<%@ Import Namespace = "OSGeo.MapGuide"%>
<%    UtilityClass utility = new UtilityClass();String webLayout = "Library://Exercise/Layouts/SheboyganAsp_4_Solution.WebLayout";//string webLayout = "Library://Samples/Sheboygan/Layouts/SheboyganAspTiled.WebLayout"; 

String sessionId = "";try{
utility.InitializeWebTier(Request);MgUserInformation userInfo = new MgUserInformation("Anonymous", "");MgSite site= new MgSite();

site.Open(userInfo);
sessionId = site.CreateSession();
}catch(MgException ex)
{
Response.Write(ex.GetMessage());
Response.Write(ex.GetDetails());
}finally{
}

%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Exercise 4</title>
</head>
<frameset rows="100,*" border="0" framespacing="0">
<frame src = "title.htm" />
<frame src="/mapguide2010/mapviewernet/ajaxviewer.aspx?SESSION=<%= sessionId %>&WEBLAYOUT=<%= webLayout %>" name="ViewerFrame" />
</frameset>
</html>

这里我们着重看下面<frame>部分,注意到我们使用到了SESSION 和 WEBLAYOUT两个参数。那么在Ajax View中,除了这两个常用参数外,还有没有别的参数可用呢?

关于Ajax Viewer所接受的参数目前还没有文档说明哪些可用怎么用,不过MapGuide的一个特点就是开源,我们可用通过他的源代码来窥探它内部的秘密。打开C:\Program Files\Autodesk\MapGuideEnterprise2010\WebServerExtensions\www\mapviewernet\mainframe.aspx 转达594行,在函数GetParameters中掐头去尾我们看下面的代码:

    webLayoutDefinition = parameters["WEBLAYOUT"];String localeParam = parameters["LOCALE"];if (localeParam != null && localeParam.Length > 0)
{
locale = localeParam;
}else{
locale = GetDefaultLocale();
}
sessionId = parameters["SESSION"];if (sessionId != null && sessionId.Length > 0)
{
sessionId = parameters["SESSION"];
orgSessionId = sessionId;
}else{
username = parameters["USERNAME"];if (null != username && username.Length > 0)
{
password = parameters["PASSWORD"];if (null == password)
{
password = "";
}return;
}

分析上面的代码,我们可以知道 Ajax Viewer中可收的参数除了我们常用的Session和Weblayout外,还有几个,他们是:
LOCALE
USERNAME
PASSWORD

那么同样的道理,那Fusion中的情况呢? 我们还是先看看Fusion Viewer的一般用法。新建一个普通的aspx页面,在Page_Load中写如下代码:

public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e)
{string webLayout = "Library://Samples/Sheboygan/Layouts/TestFlex.ApplicationDefinition";string defaultUser = "Administrator";string defaultPassword = "admin";try{MapGuideApi.MgInitializeWebTier(@"C:\Program Files\Autodesk\MapGuideEnterprise2010\WebServerExtensions\www\webconfig.ini");

MgUserInformation userInfo = new MgUserInformation(defaultUser, defaultPassword);MgSite site = new MgSite();
site.Open(userInfo);string sessionId = site.CreateSession();
Response.Write("<script>alert('" + sessionId + "');</script>");

Response.Redirect("http://localhost/mapguide2010/fusion/templates/mapguide/slate/index.html?ApplicationDefinition=" + webLayout + "&Session=" + sessionId);
}catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}

这里注意到我们的Fusion Viewer可接受的参数为ApplicationDefinition和Session, 那么除此以外还有没有别的呢?如果没有为什么是这两个而不是其他的呢?我们还是要在代码里看看一下就明白了。

打开C:\Program Files\Autodesk\MapGuideEnterprise2010\WebServerExtensions\www\fusion\lib\fusion.js,第227行左右

initialize : function(options) {
options = options || {};var sessionIdParam = this.getQueryParam('Session');            this.sessionId = sessionIdParam || (options.sessionId || null);

if (options.applicationDefinitionURL) {this.applicationDefinitionURL = options.applicationDefinitionURL;
} else {var queryAppDef = this.getQueryParam('ApplicationDefinition');if (queryAppDef) {this.applicationDefinitionURL = queryAppDef.split('+').join(' ');this.appDefJson = null;   //wipe out any preloaded AppDef in a single file build} else {this.applicationDefinitionURL = 'ApplicationDefinition.xml';
}
}

注意看上面的黑体代码,可以得知,我们所需要的两个参数正是在这里被接受的。

好了,MapGuide OpenSource 代码很多,还有很多很多更好玩的东西需要你去发现,以前来研究吧。

作者:峻祁连
邮箱:junqilian@163.com 
出处:http://junqilian.cnblogs.com 
转载请保留此信息。
本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2009/10/28/1591182.html,如需转载请自行联系原作者

MapGuide 浏览器可接受参数分析相关推荐

  1. AI:IPPR的数学表示-CNN结构/参数分析

    前言:CNN迎接多类的挑战 特定类型的传统PR方法特征提取的方法是固定的,模式函数的形式是固定的,在理论上产生了特定的"局限性" 的,分类准确度可以使用PAC学习理论的方法计算出来 ...

  2. 百度浏览器的隐私安全问题分析

    主要发现 百度浏览器是微软和安卓平台上的一种网络浏览器,个人用户在向服务器传输数据时进行加密,就算加密了也很容易被解密.浏览器更新时可能很轻易地被中间攻击者利用,执行任意代码. 安卓版本的百度浏览器传 ...

  3. 从浏览器键入url后分析网络请求过程

    当我们在浏览器中键入URL并回车,例如:小编在浏览器的地址栏中键入www.baidu.com后就打开了百度的首页,那么在这个过程中到底发生了一些什么呢?下面就由小编带大家来了解一下. 互联网的基本概念 ...

  4. Chart.js-极区图分析(参数分析+例图)

    Chart.js-极区图分析(参数分析+例图) 极区图样式总览 基本写法 参数解析 极区图1 - 普通极区图 极区图样式总览 基本写法 首先在< script >标签里面引入chart.j ...

  5. Chart.js-饼状图分析(参数分析+例图)

    Chart.js-饼状图分析(参数分析+例图) 饼状图样式总览 基本写法 参数解析 饼状图2 - 中空同心圆 饼状图3 - 多同心圆 饼状图样式总览 基本写法 首先在< script >标 ...

  6. Chart.js-雷达图分析(参数分析+例图)

    Chart.js-雷达图分析(参数分析+例图) 雷达图样式总览 基本写法 参数解析 雷达图样式总览 基本写法 首先在< script >标签里面引入chart.js: <script ...

  7. Chart.js-线形图分析(参数分析+例图)

    Chart.js-线形图分析(参数分析+例图) 线形图样式总览 基本写法 参数解析 线形图1 - 普通线形图(直线.曲线.虚线) 线形图2 - 普通线面图 线形图3 - 步进线(像极了哈夫曼编码) 线 ...

  8. ADC的参数分析以及采样分析

    A/D变换器的性能参数 2.1 采样速率与分辨率 采样速率指模数变换的速率,而分辨率表示变换输出数字数据的比特数.这2个参数很重要,因为较高的采样速率与分辨率对应了高信噪比和较宽的信号输入带宽.近几年 ...

  9. http_load安装与测试参数分析

    http_load安装与测试参数分析 http_load以并行复用的方式运行,用以测试 web 服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死. ...

最新文章

  1. python测试开发自学教程-python测试开发学习笔记
  2. 浅谈视觉设计的准确性
  3. Pad和Margin
  4. xlsx文件打开乱码_Excel 2016 双击无法打开xlsx文件怎么办?
  5. 将一段复杂文本变成字符串的赋值语句
  6. 《大数据》2021年第5期目次摘要
  7. 让AI学习AI:自动化机器学习的概述、发展和研究意义
  8. anaconda3 安装tensorflow 报Cannot remove entries fro
  9. c语言实现shellcode转换工具
  10. python查询当前路径_python获取当前目录路径和上级路径的实例
  11. LeaRun.Java可视化拖拽编辑的BI大屏
  12. 【PMP】PMBOK 笔记 第11章 项目风险管理
  13. rpa项目poc_RPA POC概述
  14. 全机房最蒟蒻的讲堂_第二期_论qwq和颜文字
  15. 读书笔记:移动的帝国_日本移动互联网兴衰启示录
  16. ORAN专题系列-1:什么是开放无线接入网O-RAN
  17. 读书笔记-深度学习入门之pytorch-第四章(含卷积神经网络实现手写数字识别)(详解)
  18. 【2021】13 年终总结
  19. redis 在java中的实例使用场景
  20. jsPlumb流程图完整实例

热门文章

  1. RedHat gcc编译器版本升级到4.8.2支持C++11标准
  2. bootstrap-multiselect加载本地数据
  3. PySpider问题记录http599
  4. hadoop运行wordcount实例,hdfs简单操作
  5. ios 10.3 汉字的中划线
  6. HTML5 2D平台游戏开发#4状态机
  7. perl 面向对象demo
  8. java调用python代码
  9. 通过select选项动态异步加载内容
  10. Programe_Of_Beauty:2.14 求数组的子数组之和的最大值