HTML Viewer的定製

來源:互聯網
上載者:User

HTML瀏覽器是一個由ESRI的ArcIMS軟體自動安裝的,用於限定圖形外觀和IMS的WEB網站函數功能的工具。HTML包含了大量的JavaScript和一些DHTML頁面,這個瀏覽器提供了一個地圖的架構、工具列、圖例、預覽地圖和其他網站的圖形元素。WEB網站的開發人員可以使用HTML、JavaScript和DHTML來增加網站頁面的彈性和可互動性。

一個網站中大概有30個左右的HTML檔案,有些是用於初始化瀏覽器,有些定義瀏覽器的架構,其它用於裝載表單核顯示資料。說實話,調整這些JavaScript和HTML來定製一個符合自己要求的瀏覽器是我見過的最為笨拙的開發方式。

HTML的檔案

一個HTML瀏覽器的檔案包括三個檔案夾:images包含了修飾地圖的圖片,標和按鈕等,我們可以更換這些表徵圖來改變網站的外觀;javascript包含了所有的javascript指令碼;Meta-inf是由網站自動建立的,它的存在與否對於網站沒有太大的影響。

在網站根目錄中的ArcIMSparam.js檔案包含了一個JavaScript全域變數的集合,它可以用於改變網站的外觀和行為,大量的定製都需要改變這個檔案的某些參數。經常地,我們需要修改這個檔案的如工具顯示、圖層管理、顏色和網站圖形項目。

HTML瀏覽器的啟動步驟:

Default.htm是整個網站的入口,它檢查用戶端的瀏覽器是否滿戶地圖顯示需要,如IE5.0以後版本等,如果是,則載入Run.htm檔案,這個檔案定義了Authorize.htm和jsForm.htm兩個架構;如果不支援瀏覽器,CannotRun.htm頁面載入,通知使用者不可使用。

Authorize.htm檢查服務的安全設定是否已經被安裝,如果是,則出現登陸對話方塊要求使用者登陸,它調用兩個JavaScript檔案,ArcIMSparam.js和aimsResource.js。此時一個GET_SERVICE_INFO的請求被發送到主地圖,如果鳥瞰圖沒有使用相同的服務,則這個請求會再次被發送。ArcIMSparam.js檔案中包含了用於主地圖和鳥瞰圖的伺服器的URL。AimsResource.js則包含了多個文本,用於顯示訊息、按鈕和標題。

Viewer.htm檔案被載入。它定義了瀏覽器的架構布置,如果想改變電子地圖的外在架構,修改這個檔案的架構設定檔。

MapFrame.htm和PostFrame.htm被載入合適的頁面架構中,其他的頁面根據需要被逐個載入。完成瀏覽器顯示的初始化工作。

下面的檔案用於載入和顯示資料:buffer.htm、query.htm和storedquery.htm

HTML瀏覽器的架構

理解HTML頁面的架構對於熟悉HTML瀏覽器是非常重要的,本文不作介紹。

是IE版本的HTML瀏覽器的布局,其他類型的瀏覽器稍有不同。這些數值的單位是象素。我們可以任意改變這些架構的尺寸以滿足自己的要求。

JSForm.htm頁面是隱藏的,它用於與IMS的Servlet連接器進行通訊。

多主機模式Multiple Hosts

一般而言,由Designer產生的WEB網站是通過存放WEB頁面的WEB伺服器上的服務service來支援的。用另外一句話來說,URL就像定義了服務一樣,也定義了WEB伺服器的主機。如果WEB頁面存放在http://www.cnblogs.com/aooyu/admin/file://my_computer/website檔案夾中,典型的URL就是http://my_computer/website/my_website,而服務的URL則是http://my_computer/servlet/com.esri.esrimap.Esrimap?Service=my_service。這個定義了服務的變數名為imsURL可以在參數檔案中找到。

當我們在一台伺服器上運行IMS服務,而在另一台伺服器上運行HTML瀏覽器的時候,就需要按照下面的做法以避免JavaScript安全限制衝突的出現:

執行重新導向任務——這個任務可以讓IMS的應用服 務器知道它使用了多個主機, 主機的名 稱。應用服 務器可以將用戶端的請求重新定向到合適的主機上。你可以設定所有的主機都能夠收到重新定向的請求。當我們使用重新定向的時候, 就不 能使用Authentication。

我們可以通過修改IMS預設的servlet連接器的屬性使用另一台WEB伺服器上的服務,連接器可以重新導向指向servlet連接器的請求到另一台WEB伺服器上。

如果需要重新定向,則需要尋找到Esrimap_prop檔案(在\Connectors\Servlet檔案夾中),並添加下面兩句:

Redirect=true

Redirectablehosts=host1,host2,host3

儲存檔案,重新啟動servlet engine。如果也許重新導向到所有的主機,則為:

Redirectablehosts=*

使用Java Connector——使用這個連接器可以讓你避免執行重新導向的任務, 但它要求你安裝Java Connector。你可以使用Java連接器的Authentication, 但是必須自己編寫代碼。

使用JAVA連接器的主要目的是通過編寫JSP頁面或JAVA程式來與IMS服務互動,我們也可以將它使用到HTML瀏覽器上。使用它可以避免改變屬性,也可以阻止ArcMap的終端使用者來擷取我們的來源資料。一個ESRI的ArcMap程式可以重一個IMS服務上下載來源資料。為了避免這一點,我們可以在HTML瀏覽器上使用JAVA連接器。使用JAVA連接器或其他的連接器可以讓我們刪除WEB伺服器上的Servlet連接器。

在無法串連到IMS的Servlet Connector的情況下,ArcMap使用者不能接觸到來源資料。如果你使用JAVA連接器而刪除IMS的Servlet連接器,所有使用IMS Servlet連接器的用戶端,包括ArcMap、ArcPad和ArcExplorer java ,都不能再使用IMS的服務了。預設地,HTML瀏覽器是使用Servlet Connetor作為連接器的。

 

定製HTML 瀏覽器

ArcIMSparam.js是我們在定製HTML瀏覽器中使用的最重要的檔案之一,也是初學者修改WEB網站所使用的第一個檔案。

在這個檔案中,包含了一個CheckParams函數,瀏覽器在啟動後調用所有檔案時使用這個函數,它用於檢查已經存在的各種架構和函數檔案,檢查關鍵的變數和更新參數。

參數檔案修改

1. 返回單一值

Var onlyUniqueSample=true;

 

 

服 務與地圖布局

imsURL時主要地圖顯示的服務URL。

imsOWURL是為鳥瞰圖顯示中的服務的URL。

刪除鳥瞰圖:

在參數檔案中設定hasOWMap=false;在MapFrame.htm檔案中設定ovIsVisible=false

將鳥瞰圖放到一個單獨的架構中:

修改啟動時地圖的範圍:

修改startLeft、startTop等四個屬性。

在啟動時顯示圖例而不是圖層列表:

在參數檔案中將showTOC=false;

在checkParams函數中添加:

legengdVisible=true;

appDir=getpath(document.location.pathname);

修改動畫:

修改MapFrame.htm頁面中修改loading splashs中的部分。

Actate Layer的修改

Actate Layer圖層可以看作是放在地圖上面的一個透明層。這個圖形顯示了一些關於地圖的輔助性資訊。HTML瀏覽器包含了多個Actate Layer,用於顯示指南針、著作權資訊、比例尺等。我們可以改變這些元素或添加新的元素。

隱藏圖層列表上的圖層

Var hideLayersFromList=true;

Var noListLayer=new Array(); //修改其中的某個數組,可以讓圖層在列表上不顯示,但不影響實際地圖顯示效果。

改變指南針的屬性

修改關於NorthArrowType、NorthArrowCoords、NorthArrowSize和NorthArrowAngle等屬性。

修改著作權資訊屬性

修改與CopyRight***有關的資訊即可。

修改ScaleBar的屬性

修改關於ScaleBar***有關的屬性即可

添加一個自訂的Acetate Layer對象

 

屬性資料顯示

限制顯示欄位

為了限制在查詢、選擇和資訊返回中的欄位,可以改變selectFields變數的值,在預設的情況下,這個值為#ALL#,這樣可以顯示所有的欄位。欄位名必須是大寫值,並且和IMS的空間伺服器相匹配。

查詢操作是在一個活動圖表層上進行的,我們可能需要改變這個活動圖表層,為了改變這個活動圖表層,可以設定swapSelectFields為true。如果這個值為true,每個圖層的欄位名表都需要被建立。

為了產生一個圖層的欄位表,設定一個變數為selFieldList的數組。

隱藏ID和SHAPE欄位

Var hideIDFieldData=true;

Var hideShapeFieldData=true;

使用別名作為欄位名

首先設定useFieldAlias=true;

fieldAliasList[n]=”APN:Application”

改變一次出現的記錄數目

改變maxFeaturesReturned的值。

Identify工具顯示要素

在預設情況下,Identify工具一次只在一個活動圖表層上工作,如果需要在多個圖層上工作,設定:

Var useIdentify=false;

Var useIdentifyAll=true;

改變標 題、LOGO和顏色

改變標題

改變viewer.htm檔案的theTitle變數即可。

改變LOGO和TopFrame的背景:

預設情況下,使用的logo映像是aimslogo1x2.gif。這個頁面的背景是使用grad_gray.jpg檔案。

改變box和zoom are的顏色:

改變var zoomBoxColor的顏色。如果改變ovBoxColor的值,就可以改變鳥瞰圖上的方框圖的顏色。這個顏色使用RGB模式。

改變tool和toolbar

改變Indentify、Hyperlink的查詢容差

改變pixelTolerance的值,即可以改變容差範圍。

改變pan和zoom屬性

Var panFactor=1;

Var zoomFactor=2;

移除工具列和工具

在參數檔案中,包含了一些以use開始的變數,它代表了IMS上可以使用的每一個工具,如usePan等。如果要出現,則設定為true。

改變工具條的映像和結構

Topbar.htm是一個定義了工具列的結構,它使用DHTML來產生了兩列表,我們可以定製這個檔案以改變成不同的結構,使用自訂的映像或完全不使用表。

產生超級連結

如何在地圖的一個要素或一個屬性顯示上產生超級連結。如果要使用超級連結,首先設定useHyperLink為true。而圖層的資料庫紅必須有一個欄位儲存著有效URL,比如http://www.esri.com/。我們還需要產生一個圖層和欄位名的數組。

為了產生一個圖層表,設定一個陣列變數為hyperLinkLayers,在數組中給每個圖層設定一個字串,最上面的圖層的索引為0,圖層名的大小寫必須注意。為了產生一個超級連結欄位表,需要設定一個陣列變數為hyperLinkFields,我們需要將這兩個變數聯絡起來,如下面的例子:

hyperLinkLayers[0]=”MUSEUMS”;

hyperLinkFields[0]=”WEBSITE”;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.