MapGuide 浏览器可接受参数分析
如果你也正在困惑于MapGuide Ajax Viewer或者Fusion Viewer究竟可以使用那些參數(shù),那么請(qǐng)你繼續(xù)閱讀。 ?
我們首先把Ajax Viewer和Fusion Viewer可用的參數(shù)列表列出來:
Ajax Viewer中可用的參數(shù)為:
WEBLAYOUT
LOCALE
SESSION
USERNAME
PASSWORD
Fusion Viewer可用的參數(shù)為:
Session
ApplicationDefinition
?
當(dāng)然了,首先我們還是先簡(jiǎn)單介紹一下我們?cè)诨贛apGuide開發(fā)WebGIS應(yīng)用程序時(shí)是怎樣調(diào)用MapGuide 瀏覽器的。
在使用Ajax Viewer時(shí):
<%@ 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兩個(gè)參數(shù)。那么在Ajax View中,除了這兩個(gè)常用參數(shù)外,還有沒有別的參數(shù)可用呢?
關(guān)于Ajax Viewer所接受的參數(shù)目前還沒有文檔說明哪些可用怎么用,不過MapGuide的一個(gè)特點(diǎn)就是開源,我們可用通過他的源代碼來窺探它內(nèi)部的秘密。打開C:\Program Files\Autodesk\MapGuideEnterprise2010\WebServerExtensions\www\mapviewernet\mainframe.aspx 轉(zhuǎn)達(dá)594行,在函數(shù)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中可收的參數(shù)除了我們常用的Session和Weblayout外,還有幾個(gè),他們是:
LOCALE
USERNAME
PASSWORD
那么同樣的道理,那Fusion中的情況呢? 我們還是先看看Fusion Viewer的一般用法。新建一個(gè)普通的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可接受的參數(shù)為ApplicationDefinition和Session,?那么除此以外還有沒有別的呢?如果沒有為什么是這兩個(gè)而不是其他的呢?我們還是要在代碼里看看一下就明白了。
打開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';
}
}
?
注意看上面的黑體代碼,可以得知,我們所需要的兩個(gè)參數(shù)正是在這里被接受的。
?
好了,MapGuide OpenSource 代碼很多,還有很多很多更好玩的東西需要你去發(fā)現(xiàn),以前來研究吧。
作者:峻祁連郵箱:junqilian@163.com?
出處:http://junqilian.cnblogs.com?
轉(zhuǎn)載請(qǐng)保留此信息。
本文轉(zhuǎn)自峻祁連. Moving to Cloud/Mobile博客園博客,原文鏈接:http://www.cnblogs.com/junqilian/archive/2009/10/28/1591182.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!
總結(jié)
以上是生活随笔為你收集整理的MapGuide 浏览器可接受参数分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016年下半年勒索软件数量翻倍
- 下一篇: 第三篇:POSIX标准中的 “ 限制 ”