2010年5月31日 星期一

MapGuide_圖資移機方法

從開發環境要轉移到正式環境,

除了資料庫和程式碼以外,圖資的轉移也是一個大工程,

MapGuide有提供一個打包圖資的工具,

步驟:

1. 先確定你要打包的內容在MapGuide Studio內的哪一個資料夾

2. 打開MapGuide管理介面http://localhost/mapguide2010/mapadmin/packagemanagement.php

點選Manage Packages項目,在Folder name欄位輸入要打包的資料夾

輸入規格:"Library://資料夾名稱"

3. 按下Make,MapGuide即會在C:\Program Files\Autodesk\MapGuideEnterprise2010\Server\Packages這個資料夾產一個.MGP的壓縮檔案。

4. 帶著這個壓縮檔,複製到正式環境相同的資料夾內

5. 於正式環境的管理介面進到Manage Packages項目,可以發現下方資料列表有上傳的MGP檔案,按下Load Package,即會將全部資料放置回與測試環境相同的位子。

管理介面:

MapGuide_變更滑鼠指標

在開發MapGuide的時候會發現,滑鼠指標不會跟著功能改變,

常常會被使用者尋問是否可以依照功能變更滑鼠指標,

才能清楚的知道自己再哪一項功能。

方法就是在滑鼠移到Map視窗的時候執行一個換圖的Script,

步驟:

1. 準備相關的滑鼠指標圖示(.cur)

2. 將上述檔案放置到Program Files\Autodesk\MapGuideEnterprise2010\WebServerExtensions\www\stdicons\cursor之下

3. 增加改變滑鼠指標的程式碼

位置:MapGuideEnterprise2010\WebServerExtensions\www\viewerfiles

檔案:toolbar.templ

程式碼:

function changeIcon(action)
{
var cururl = "../../mapguide2010/stdicons/cursor/";
var map = parent.mapFrame.document.getElementById("map");
switch(action)
{
case 1: //平移
map.style.cursor = cururl + "1.cur"
break;
case 7: //放大
map.style.cursor = cururl + "7.cur"
break;
case 8: //縮小
map.style.cursor = cururl + "8.cur"
break;
case 9: //框選放大
map.style.cursor = cururl + "9.cur"
break;
case 15: //選擇
map.style.cursor = 'default';
break;
case 12: //上一頁
//map.style.cursor = cururl + "12.cur"
//break;
case 13: //下一頁
//map.style.cursor = cururl + "13.cur"
//break;
default:
//map.style.cursor = 'default';
//break;
}
}

4. 找到地圖反應的事件執行上述Script以更滑鼠指標圖案

搜尋:OnCommandExecuted,增加changeIcon(action)呼叫

程式碼:

function OnCommandExecuted(action)
{
changeIcon(action) ←←←←←←←←←←←←←←←←←←←
.....
.....
.....
}

6月要增加30篇! 加油!

要把txt上面的教學檔都放上來,

目標一天一篇!加油....

2010年5月28日 星期五

雲林縣都市計畫地理資訊系統上線了~~

今天去參加雲林縣都市計畫地理資訊系統成果發表會,

沒想到辦的很隆重耶!看到記者一值拍自己寫的系統,

真是一個奇妙的感覺。

系統網址:http://urbangis.yunlin.gov.tw/YLCityGIS/

開發工具:VS2005、MapGuide2010、MS SQL

首頁:


GIS部分:

2010年5月27日 星期四

MapGuide_動態隱藏功能頁面

MapGuide預設版面的功能頁於頁面右側,

雖然這樣的設計算是好用,但常聽到螢幕小的業主抱怨,

認為右邊的功能頁應該要可以縮放,

想要達成隱藏功能頁可以利用下面的程式碼,

步驟:

1. 首先在Layout上新增一個Invoke Script

2. 在Additonal Parameters輸入下列Script

if (document.all.tags("Frameset").item(1).cols == '*,0')
document.all.tags("Frameset").item(1).cols = '*,280';
else
document.all.tags("Frameset").item(1).cols = '*,0';

即可透過該按鈕讓使用者自行隱藏功能頁面。

註:當然,若是你所使用的框架有改變,其呼叫的階層也會有所變化。

MapGuide_解決圖例展開不全

專案開發如果碰到圖例較多時,

使用MapGuide的基本版型會造成左邊圖例無法顯示全部項目,

這個原因其實是因為MapGuide原始程式碼內有進行判斷,

當超過一定的數量時,會自動以...代替圖示,以保持顯示的美觀,

但這樣就失去圖例的用處了,所以我們還是要把他展開,

方法就是去改變他判斷的數值,讓這個數值大於我們的項目。

步驟:

1. 找到要修改的檔案

位置:C:\Program Files\Autodesk\MapGuideEnterprise2009\WebServerExtensions\www\viewerfiles

檔案:legendui.templ

2. 用記事本打開上述檔案,搜尋if(!sc.showlongtheme && styles.length > 15)

3. 找到位置後,將數字15改為你希望的項目

4. 存檔,你會發現,現在他不會用...來代替圖例了。

MapGuide_使用Asp.net開始開發

不管是用MapGuide OpenSource或是MapGuide Enterprise遇到第一個問題都是如何開始?

首先安裝MapGuideServer與MapGuideWebServerExtensions

過程中注意選擇要用的語言跟使用的網路伺服器(IIS)

安裝完成後可先連至MapGuide的管理介面看是否安裝完成

管理介面:http://localhost/mapguide2010/mapadmin/login.php

預設帳號為:Administrator 密碼:admin



接下來就是正式的程式開發工作

步驟

1. 開啟MapGuide Studio依照步驟完成一個想要展示的Layout

2. 開啟VS20XX版,選擇Asp.Net專案

3. 將C:\Program Files\Autodesk\MapGuideEnterprise2010\WebServerExtensions
\www\mapviewernet\bin 這個目錄下的所有DLL檔複製到專案的BIN資料夾

以確保程式呼叫MapGuide相關API時無誤。

4. 新增一個檔名.aspx檔案,並輸入以下程式碼


<%@ Import Namespace="OSGeo.MapGuide" %>
<%
MapGuideApi.MgInitializeWebTier("C:\Program Files\Autodesk\MapGuideEnterprise2010\WebServerExtensions\www\webconfig.ini")
Dim userInfo As MgUserInformation = New MgUserInformation("Administrator", "admin")
Dim site As MgSite = New MgSite()
site.Open(userInfo)
Dim sessionId As String = site.CreateSession()
Dim webLayout As String = "Library://TPSW/Layout/TPSWLayout.WebLayout"
Session("UserSession") = sessionId
%>

<!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 runat="server">
<title></title>
</head>
<frameset rows="80,*">
<frame src="SWTitle.aspx" scrolling="no" name="Title">
<frame src="/mapguide2010/mapviewernet/ajaxviewer.aspx?SESSION=<%= sessionId %>&WEBLAYOUT=<%= webLayout %>" name="ViewerFrame" />
</frameset>
<body>
<form id="form1" runat="server">
<div></div>
</form>
</body>

</html>


主要是利用MapGuide所提供的框架來展示圖面資料,

效果就像下圖這樣。

2010年5月26日 星期三

MapGuide_中文化版面


原始Mapguide所提供的版面是英文版面,在專案開發時不能直接套用,

必須將版面變更為繁體中文版本。

步驟:

1. 至C:\Program Files\MapGuideOpenSource\WebServerExtensions\www\localized之下

2. 利用記事本修改en檔案。

3. 依照需要中文化的文字輸入想顯示的內容(儲存時選擇UTF-8編碼)

4. 重新啟動MapGuide服務。

當然,也可以自行製作zh語系檔案,但必須在MapGuide管理介面及程式呼叫時設定

1. 於管理介面http://localhost/mapguide/mapadmin/login.php

2. 於Manage Servers下的 Configure Server 將General Properties/Default locale設定為zh

3. 程式呼叫時設定要抓的語系檔

4. src="http://localhost/mapguide2008/mapviewernet/ajaxviewer.aspx?SESSION=<%= sessionId %>&WEBLAYOUT=<%= webLayout %>&locale=zh" name="ViewerFrame"



Mapguide_解決中文標註

MapGuide在顯示中文標註上會有亂碼問題產生,

解決方法只要在安裝MapGuide Server的伺服器安裝可顯示繁體中文的字型檔即可。

步驟:

1. 下載arialuni.ttf字型檔(網路上即可搜尋下載)。

2. 安裝於伺服器C:/windows/fonts資料夾內。

3. 重新啟動電腦。

4. 於MapGuide Studio內設定標註字型時,選擇Arial Unicode MS。

5. 重新整理網頁。

賀!看到繁體中文了。

首發。

測試文章