HTML Viewer的定制
HTML瀏覽器是一個由ESRI的ArcIMS軟件自動安裝的,用于限定圖形外觀和IMS的WEB站點函數(shù)功能的工具。HTML包含了大量的JavaScript和一些DHTML頁面,這個瀏覽器提供了一個地圖的框架、工具欄、圖例、預(yù)覽地圖和其他站點的圖形元素。WEB站點的開發(fā)者可以使用HTML、JavaScript和DHTML來增加站點頁面的彈性和可交互性。
一個站點中大概有30個左右的HTML文件,有些是用于初始化瀏覽器,有些定義瀏覽器的框架,其它用于裝載表單核顯示數(shù)據(jù)。說實話,調(diào)整這些JavaScript和HTML來定制一個符合自己要求的瀏覽器是我見過的最為笨拙的開發(fā)方式。
? HTML的文件
一個HTML瀏覽器的文件包括三個文件夾:images包含了修飾地圖的圖片,如圖標(biāo)和按鈕等,我們可以更換這些圖標(biāo)來改變站點的外觀;javascript包含了所有的javascript腳本;Meta-inf是由站點自動創(chuàng)建的,它的存在與否對于站點沒有太大的影響。
在站點根目錄中的ArcIMSparam.js文件包含了一個JavaScript全局變量的集合,它可以用于改變站點的外觀和行為,大量的定制都需要改變這個文件的某些參數(shù)。經(jīng)常地,我們需要修改這個文件的如工具顯示、圖層管理、顏色和站點圖形項目。
? HTML瀏覽器的啟動步驟:
Default.htm是整個站點的入口,它檢查客戶端的瀏覽器是否滿戶地圖顯示需要,如IE5.0以后版本等,如果是,則載入Run.htm文件,這個文件定義了Authorize.htm和jsForm.htm兩個框架;如果不支持瀏覽器,CannotRun.htm頁面載入,通知用戶不可使用。
Authorize.htm檢查服務(wù)的安全設(shè)置是否已經(jīng)被安裝,如果是,則出現(xiàn)登陸對話框要求用戶登陸,它調(diào)用兩個JavaScript文件,ArcIMSparam.js和aimsResource.js。此時一個GET_SERVICE_INFO的請求被發(fā)送到主地圖,如果鳥瞰圖沒有使用相同的服務(wù),則這個請求會再次被發(fā)送。ArcIMSparam.js文件中包含了用于主地圖和鳥瞰圖的服務(wù)器的URL。AimsResource.js則包含了多個文本,用于顯示消息、按鈕和標(biāo)題。
Viewer.htm文件被載入。它定義了瀏覽器的框架布置,如果想改變電子地圖的外在框架,修改這個文件的框架配置文件。
MapFrame.htm和PostFrame.htm被載入合適的頁面框架中,其他的頁面根據(jù)需要被逐個載入。完成瀏覽器顯示的初始化工作。
下面的文件用于載入和顯示數(shù)據(jù):buffer.htm、query.htm和storedquery.htm
? HTML瀏覽器的框架
理解HTML頁面的框架對于熟悉HTML瀏覽器是非常重要的,本文不作介紹。
上圖是IE版本的HTML瀏覽器的布局,其他類型的瀏覽器稍有不同。這些數(shù)值的單位是象素。我們可以任意改變這些框架的尺寸以滿足自己的要求。
JSForm.htm頁面是隱藏的,它用于與IMS的Servlet連接器進行通訊。
? 多主機模式Multiple Hosts
一般而言,由Designer產(chǎn)生的WEB站點是通過存放WEB頁面的WEB服務(wù)器上的服務(wù)service來支持的。用另外一句話來說,URL就像定義了服務(wù)一樣,也定義了WEB服務(wù)器的主機。如果WEB頁面存放在http://www.cnblogs.com/aooyu/admin/file://my_computer/website文件夾中,典型的URL就是http://my_computer/website/my_website,而服務(wù)的URL則是http://my_computer/servlet/com.esri.esrimap.Esrimap?Service=my_service。這個定義了服務(wù)的變量名為imsURL可以在參數(shù)文件中找到。
當(dāng)我們在一臺服務(wù)器上運行IMS服務(wù),而在另一臺服務(wù)器上運行HTML瀏覽器的時候,就需要按照下面的做法以避免JavaScript安全限制沖突的出現(xiàn):
? 執(zhí)行重定向任務(wù)——這個任務(wù)可以讓IMS的應(yīng)用服? 務(wù)器知道它使用了多個主機,? 主機的名? 稱。應(yīng)用服? 務(wù)器可以將客戶端的請求重新定向到合適的主機上。你可以設(shè)置所有的主機都能夠收到重新定向的請求。當(dāng)我們使用重新定向的時候,? 就不? 能使用Authentication。
我們可以通過修改IMS缺省的servlet連接器的屬性使用另一臺WEB服務(wù)器上的服務(wù),連接器可以重定向指向servlet連接器的請求到另一臺WEB服務(wù)器上。
如果需要重新定向,則需要尋找到Esrimap_prop文件(在\Connectors\Servlet文件夾中),并添加下面兩句:
Redirect=true
Redirectablehosts=host1,host2,host3
保存文件,重新啟動servlet engine。如果也許重定向到所有的主機,則為:
Redirectablehosts=*
? 使用Java Connector——使用這個連接器可以讓你避免執(zhí)行重定向的任務(wù),? 但它要求你安裝Java Connector。你可以使用Java連接器的Authentication,? 但是必須自己編寫代碼。
使用JAVA連接器的主要目的是通過編寫JSP頁面或JAVA程序來與IMS服務(wù)交互,我們也可以將它使用到HTML瀏覽器上。使用它可以避免改變屬性,也可以阻止ArcMap的終端用戶來獲取我們的源數(shù)據(jù)。一個ESRI的ArcMap程序可以重一個IMS服務(wù)上下載源數(shù)據(jù)。為了避免這一點,我們可以在HTML瀏覽器上使用JAVA連接器。使用JAVA連接器或其他的連接器可以讓我們刪除WEB服務(wù)器上的Servlet連接器。
在無法連接到IMS的Servlet Connector的情況下,ArcMap用戶不能接觸到源數(shù)據(jù)。如果你使用JAVA連接器而刪除IMS的Servlet連接器,所有使用IMS Servlet連接器的客戶端,包括ArcMap、ArcPad和ArcExplorer java ,都不能再使用IMS的服務(wù)了。缺省地,HTML瀏覽器是使用Servlet Connetor作為連接器的。
?
定制HTML 瀏覽器
ArcIMSparam.js是我們在定制HTML瀏覽器中使用的最重要的文件之一,也是初學(xué)者修改WEB站點所使用的第一個文件。
在這個文件中,包含了一個CheckParams函數(shù),瀏覽器在啟動后調(diào)用所有文件時使用這個函數(shù),它用于檢查已經(jīng)存在的各種框架和函數(shù)文件,檢查關(guān)鍵的變量和更新參數(shù)。
? 參數(shù)文件修改
1. 返回單一值
Var onlyUniqueSample=true;
?
?
? 服? 務(wù)與地圖布局
imsURL時主要地圖顯示的服務(wù)URL。
imsOWURL是為鳥瞰圖顯示中的服務(wù)的URL。
刪除鳥瞰圖:
在參數(shù)文件中設(shè)置hasOWMap=false;在MapFrame.htm文件中設(shè)置ovIsVisible=false
將鳥瞰圖放到一個單獨的框架中:
修改啟動時地圖的范圍:
修改startLeft、startTop等四個屬性。
在啟動時顯示圖例而不是圖層列表:
在參數(shù)文件中將showTOC=false;
在checkParams函數(shù)中添加:
legengdVisible=true;
appDir=getpath(document.location.pathname);
修改動畫:
修改MapFrame.htm頁面中修改loading splashs中的部分。
? Actate Layer的修改
Actate Layer圖層可以看作是放在地圖上面的一個透明層。這個圖形顯示了一些關(guān)于地圖的輔助性信息。HTML瀏覽器包含了多個Actate Layer,用于顯示指南針、版權(quán)信息、比例尺等。我們可以改變這些元素或添加新的元素。
隱藏圖層列表上的圖層
Var hideLayersFromList=true;
Var noListLayer=new Array(); //修改其中的某個數(shù)組,可以讓圖層在列表上不顯示,但不影響實際地圖顯示效果。
改變指南針的屬性
修改關(guān)于NorthArrowType、NorthArrowCoords、NorthArrowSize和NorthArrowAngle等屬性。
修改版權(quán)信息屬性
修改與CopyRight***有關(guān)的信息即可。
修改ScaleBar的屬性
修改關(guān)于ScaleBar***有關(guān)的屬性即可
添加一個自定義的Acetate Layer對象
?
? 屬性數(shù)據(jù)顯示
限制顯示字段
為了限制在查詢、選擇和信息返回中的字段,可以改變selectFields變量的值,在缺省的情況下,這個值為#ALL#,這樣可以顯示所有的字段。字段名必須是大寫值,并且和IMS的空間服務(wù)器相匹配。
查詢操作是在一個活動圖層上進行的,我們可能需要改變這個活動圖層,為了改變這個活動圖層,可以設(shè)置swapSelectFields為true。如果這個值為true,每個圖層的字段名表都需要被創(chuàng)建。
為了產(chǎn)生一個圖層的字段表,設(shè)置一個變量為selFieldList的數(shù)組。
隱藏ID和SHAPE字段
Var hideIDFieldData=true;
Var hideShapeFieldData=true;
使用別名作為字段名
首先設(shè)置useFieldAlias=true;
fieldAliasList[n]=”APN:Application”
改變一次出現(xiàn)的記錄數(shù)目
改變maxFeaturesReturned的值。
Identify工具顯示要素
在默認(rèn)情況下,Identify工具一次只在一個活動圖層上工作,如果需要在多個圖層上工作,設(shè)置:
Var useIdentify=false;
Var useIdentifyAll=true;
? 改變標(biāo)? 題、LOGO和顏色
改變標(biāo)題
改變viewer.htm文件的theTitle變量即可。
改變LOGO和TopFrame的背景:
缺省情況下,使用的logo圖像是aimslogo1x2.gif。這個頁面的背景是使用grad_gray.jpg文件。
改變box和zoom are的顏色:
改變var zoomBoxColor的顏色。如果改變ovBoxColor的值,就可以改變鳥瞰圖上的方框圖的顏色。這個顏色使用RGB模式。
? 改變tool和toolbar
改變Indentify、Hyperlink的查詢?nèi)莶?/p>
改變pixelTolerance的值,即可以改變?nèi)莶罘秶?/p>
改變pan和zoom屬性
Var panFactor=1;
Var zoomFactor=2;
移除工具欄和工具
在參數(shù)文件中,包含了一些以use開始的變量,它代表了IMS上可以使用的每一個工具,如usePan等。如果要出現(xiàn),則設(shè)置為true。
改變工具條的圖像和結(jié)構(gòu)
Topbar.htm是一個定義了工具欄的結(jié)構(gòu),它使用DHTML來產(chǎn)生了兩列表,我們可以定制這個文件以改變成不同的結(jié)構(gòu),使用自定義的圖像或完全不使用表。
? 產(chǎn)生超級鏈接
如何在地圖的一個要素或一個屬性顯示上產(chǎn)生超級鏈接。如果要使用超級鏈接,首先設(shè)置useHyperLink為true。而圖層的數(shù)據(jù)庫紅必須有一個字段存儲著有效的URL,比如http://www.esri.com/。我們還需要產(chǎn)生一個圖層和字段名的數(shù)組。
為了產(chǎn)生一個圖層表,設(shè)置一個數(shù)組變量為hyperLinkLayers,在數(shù)組中給每個圖層設(shè)置一個字符串,最上面的圖層的索引為0,圖層名的大小寫必須注意。為了產(chǎn)生一個超級鏈接字段表,需要設(shè)置一個數(shù)組變量為hyperLinkFields,我們需要將這兩個變量聯(lián)系起來,如下面的例子:
hyperLinkLayers[0]=”MUSEUMS”;
hyperLinkFields[0]=”WEBSITE”;
轉(zhuǎn)載于:https://www.cnblogs.com/aooyu/archive/2009/11/06/1597606.html
總結(jié)
以上是生活随笔為你收集整理的HTML Viewer的定制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智力测试题2——“五个人、五座房子”问题
- 下一篇: 网站外链查询接近100%精确的方法