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


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值