HTML Viewer的定制

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”;

posted @ 2009-11-06 18:20  AooYu  阅读(446)  评论(0编辑  收藏  举报