ArcIMS初级教程(四)第九章定制Java浏览器(三)
时间:2007-08-18 来源:iceglacier
Mapservice AXL文件与default.axl文件对比
default.axl文件的允许网站程序员不经过修改Mapservice AXL文件,就能改变可见图层及其专题显示。此外,网站程序员还可以使用default.axl,维护网站的标准外观,即使在Mapservice AXL文件已被修改了的情况下。
在Authoring过程中对Mapservice AXL文件的任何修改都不会影响default.axl文件。例如,即使你在Mapservice AXL文件中删除了一个图层,default.axl文件也没有丝毫改变(这个图层在default.axl文件中照样被引用)。
当你在要素地图服务中增加或删除任何图层时,你在网站上都看不出这种改变。也就是说,default.axl文件中有关图层及其显示的信息能够覆盖掉Mapservice AXL文件中的相关信息。所以,网站程序员可以在default.axl 文件中编辑图层及专题符号显示标签,以使这些信息总是出现在网站上,而不管地图服务AXL文件中的内容是什么。
那么怎样才能看到在Mapservice且AXL文件中所做的修改呢?你可以人工地编辑default.axl文件作相应的改变,或者也可以重新运行一遍Designer程序,生成一个具备相同的图层数据及显示信息的新的Mapservice AXL文件和新的default.axl文件。
Default.axl文件
Default.axl文件是Designer在创建Java浏览器网站时产生的另一个AXL文件,它提供了另一种改变网站所使用的数据及其专题显示的方法。
Default.axl文件的内容看起来与地图服务AXL文件既有相似之处又又不同之处。对于影像地图服务来说,default.axl文件仅包含了影像地图服务的引用。在Default.axl中只能见到一个图层,用Mapservice名引用的影像图层,对于要素地图服务,在Mapservice职AXL文件中定义的图层在default.axl中也同样地定义。例如,如果在C:\arcIMS\AXL目录中的Mapservice确良AXL文件中有五个多边形图层,在default.axl中也有同样五个多边形图层。
Java Custom浏览器文件结构
打开一个由Designer生成的Java Custom浏览器网站时,文件将依次被打开或访问。打开的顺序是在Designer中建立的,但是你可以根据需要改变这个顺序。
在缺省的情况下,一个典型的Java网站打开的第一个文件是default.axl文件,该文件为站点的入口,常用来检查网站的设置。对于Java网站来说,default.axl文件将检查客户端是否安装了Java Runtime Environment。如果安装了的话,接下来的文件就被打开,否则,一个提示用户安装JRE的网页被打开。
接下来要打开的是Frame.htm文件。这个HTML文件定义了该网站的框架的大小和位置。它同时还引用default.js参数文件,实现网站的功能,包括活动图层、地图提示等。
框架定义好了以后,每个框架所指向的HTML文件将被执行。其中两个主要的框架是地图框架和工具栏框架,分别执行的是map.htm和toolbar.htm文件。Map.htm文件将applets下载到网页浏览器当中,并且到default.axl文件中去查找有关图层及其专题显示信息;toolbar.htm文件则定义了工具栏的外观,并且通过访问function.js参数文件获取每个工具的功能信息。
Java Custom浏览器的框架布局
上图显示了Java Custom浏览器模板的基本框架布局(与真实大小不成比例),图中的数字为框架的大小(单位是pixel),其中MapFrame是主要的地图显示窗口,其大小就是剩余空间的大小。这些框架的大小都可以通过编辑frame.htm来改变,也可以在frame.htm中删除某个框架。
每个框架都与一个相关联的HTML文件,该文件可以调用所需的applets创建框架,或者定义框架所包含的内容。有些框架,如ModeFrame(描述了工具的帮助信息)所需的信息保存在不止一个HTML文件中;而有些框架,如MapFrame,则是从另外一个文件(default.axl)中接收参数信息。这些文件都写在上面的括号中。
对于textFrame框架,主要的HTML框架是bottom.htm,其它一些HTML文件也能够用来填充这个框架,这要视你在网站中加入的功能而定。这些HTML功能包括:AddPoint.htm、EditNotes.htm、MapNotes.htm、OpenProject.htm、SavaMapImage.htm、SavaProject.htm、SetMeasureUnits.htm、Clickxy.htm*、LoadingMapNotes.htm*、SubmitMapNotes*。
注:带*的表示Beta 3以后发布的。
Java Applets
Applet是一种能够作为附件嵌入在网站文件中,并能在支持Java的网页浏览器中执行的Java程序。当首次访问一个使用Java浏览器模板的网站时,Java 浏览器会向客户端浏览器发送许多applets。这样,用户向网站中请求一个功能时,applet就会在客户端机器处理并执行这些请求。
这些applets中,IMSMap是Java模板网站中的一个重要的组件。如果没有IMSMap applet,Java 浏览器网站就不起作用。由于applet是在客户端处理数据的,所以能够节约服务器端资源,提高运行速度,这样就可以支持更快更强大的应用程序,可以添加一些功能如要素流。
要使用IMSMap applet,用户必须能够与它进行交互。客户可以通过工具条或HTML输入窗体与applet进行通讯。例如,如果你要在世界地图上放大到某个国家,可以点击Zoom In 工具。由于在function.js文件中,你已经通过为这个按纽分配了一个IMSMap请求。所以每当客户端用户点击这个按纽时,相应的请求就会被执行。
对于Java Custom浏览器来说,还有其它三个applets也被发送到浏览器当中,即内容表applet(IMStoc),概略地图applet(IMSoverview)和比例尺栏applet(IMSscalebar)。它们都依赖于IMSMap applet。例如,概略图就依赖于地图框架中打开的是什么图层。所以实际上,这三个applets都是IMSMap apple的"附件"。
理解Java浏览器的对象模型
IMSMap apple中使用的元素,例如 applet对象本身(parent.mapFrame.IMSMap)、图层、颜色、专题符号等等。
对象能够实现一定的功能,请求就是用来告诉对象去执行相应的功能的,许多请求包含了提供更加具体信息的参数。例如,漫游请求就需要一个字符串参数,用来描述向那个方向漫游(如"panEast","panWest","pan south")。注意即使请求没有参数,也必须用一个空的括号"()"。
对象和请求都有一定的等级体系,越概括的对象越放在上面(如IMSMap apple对象),而越具体的对象越放在下面(如线图层的ValueMapRenderer)。
许多Java Applet API方法都返回一个对象。例如parent.mapFrame.IMSMap.getExtent()就返回一个范围对象。你可以将返回的对象赋给一个变量,然后在后面的语句中调用这个变量。
连锁请求允许将基本的Object.Method语句扩充成包含了许多请求的语句(Object.出息Method.Method.Method etc.)。系统在解析这种语句时每次都执行一个object.method对,返回的对象又被下一个method引用,以此类推。在编写连锁请求语句时,要注意确保每个object.method对返回的对象要正好是下一个method的object,否则程序容易出现错误。 Java Custom浏览器对象模型举例
上面的对象模型图显示了IMSMap applet对象之间的关系。这种图对于了解对象之间的关系,哪些方法可以调用来获取信息以及改变一个对象等来说,是个重要的资源。
上面的例子是一个获取某个特定图层的地图范围(本例中是要获得该图层的最大和最小的x,y坐标)的过程示意。
IMSMap applet对象的等级最高是applet本身,可以通过下列JavaScript代码来访问--parent.mapFrame.IMSMap。从这点出发,你可以调用一些次一级的对象。
该例中,可以用applet对象请求获取某一特定图层。语句parent.mapFrame.IMSMap.getLayer("CANADA")调用了地图 applet对象,并且通过它得到一个名叫"canada"的图层。该语句将返回一个图层对象。可以将这个图层对象保存在某个变量中供后面调用。
有了这个图层对象以后,你就可以得到它的范围了。使用getExtent()方法,就可以得到Canada这个图层的范围,并作为一个范围对象返回。最后,你可以从图层对象中获取一些特定信息,本例中可以获得地图范围的最大和最小的x,y坐标(使用getXmin,getYmin,getXmax,getYmax请求)。这些方法返回双精度对象(实数)。这些值也可以保存在变量中供今后使用。
Java浏览器对象模型
ArcIMS的联机帮助对于理解Java浏览器对象模型,对象及对象模型等级,每个对象可以使用的方法等是一个很有用的资源。但是,Beta 3版本的对象模型并没有包含在ArcIMS的联机帮助中。
在线帮助是以功能的分类来组织的。对于每一类功能,帮助窗口的右侧都有详细的描述,并且列出了这一功能可以使用的对象和方法。
default.axl文件的允许网站程序员不经过修改Mapservice AXL文件,就能改变可见图层及其专题显示。此外,网站程序员还可以使用default.axl,维护网站的标准外观,即使在Mapservice AXL文件已被修改了的情况下。
在Authoring过程中对Mapservice AXL文件的任何修改都不会影响default.axl文件。例如,即使你在Mapservice AXL文件中删除了一个图层,default.axl文件也没有丝毫改变(这个图层在default.axl文件中照样被引用)。
当你在要素地图服务中增加或删除任何图层时,你在网站上都看不出这种改变。也就是说,default.axl文件中有关图层及其显示的信息能够覆盖掉Mapservice AXL文件中的相关信息。所以,网站程序员可以在default.axl 文件中编辑图层及专题符号显示标签,以使这些信息总是出现在网站上,而不管地图服务AXL文件中的内容是什么。
那么怎样才能看到在Mapservice且AXL文件中所做的修改呢?你可以人工地编辑default.axl文件作相应的改变,或者也可以重新运行一遍Designer程序,生成一个具备相同的图层数据及显示信息的新的Mapservice AXL文件和新的default.axl文件。
Default.axl文件
Default.axl文件是Designer在创建Java浏览器网站时产生的另一个AXL文件,它提供了另一种改变网站所使用的数据及其专题显示的方法。
Default.axl文件的内容看起来与地图服务AXL文件既有相似之处又又不同之处。对于影像地图服务来说,default.axl文件仅包含了影像地图服务的引用。在Default.axl中只能见到一个图层,用Mapservice名引用的影像图层,对于要素地图服务,在Mapservice职AXL文件中定义的图层在default.axl中也同样地定义。例如,如果在C:\arcIMS\AXL目录中的Mapservice确良AXL文件中有五个多边形图层,在default.axl中也有同样五个多边形图层。
Java Custom浏览器文件结构
打开一个由Designer生成的Java Custom浏览器网站时,文件将依次被打开或访问。打开的顺序是在Designer中建立的,但是你可以根据需要改变这个顺序。
在缺省的情况下,一个典型的Java网站打开的第一个文件是default.axl文件,该文件为站点的入口,常用来检查网站的设置。对于Java网站来说,default.axl文件将检查客户端是否安装了Java Runtime Environment。如果安装了的话,接下来的文件就被打开,否则,一个提示用户安装JRE的网页被打开。
接下来要打开的是Frame.htm文件。这个HTML文件定义了该网站的框架的大小和位置。它同时还引用default.js参数文件,实现网站的功能,包括活动图层、地图提示等。
框架定义好了以后,每个框架所指向的HTML文件将被执行。其中两个主要的框架是地图框架和工具栏框架,分别执行的是map.htm和toolbar.htm文件。Map.htm文件将applets下载到网页浏览器当中,并且到default.axl文件中去查找有关图层及其专题显示信息;toolbar.htm文件则定义了工具栏的外观,并且通过访问function.js参数文件获取每个工具的功能信息。
Java Custom浏览器的框架布局
上图显示了Java Custom浏览器模板的基本框架布局(与真实大小不成比例),图中的数字为框架的大小(单位是pixel),其中MapFrame是主要的地图显示窗口,其大小就是剩余空间的大小。这些框架的大小都可以通过编辑frame.htm来改变,也可以在frame.htm中删除某个框架。
每个框架都与一个相关联的HTML文件,该文件可以调用所需的applets创建框架,或者定义框架所包含的内容。有些框架,如ModeFrame(描述了工具的帮助信息)所需的信息保存在不止一个HTML文件中;而有些框架,如MapFrame,则是从另外一个文件(default.axl)中接收参数信息。这些文件都写在上面的括号中。
对于textFrame框架,主要的HTML框架是bottom.htm,其它一些HTML文件也能够用来填充这个框架,这要视你在网站中加入的功能而定。这些HTML功能包括:AddPoint.htm、EditNotes.htm、MapNotes.htm、OpenProject.htm、SavaMapImage.htm、SavaProject.htm、SetMeasureUnits.htm、Clickxy.htm*、LoadingMapNotes.htm*、SubmitMapNotes*。
注:带*的表示Beta 3以后发布的。
Java Applets
Applet是一种能够作为附件嵌入在网站文件中,并能在支持Java的网页浏览器中执行的Java程序。当首次访问一个使用Java浏览器模板的网站时,Java 浏览器会向客户端浏览器发送许多applets。这样,用户向网站中请求一个功能时,applet就会在客户端机器处理并执行这些请求。
这些applets中,IMSMap是Java模板网站中的一个重要的组件。如果没有IMSMap applet,Java 浏览器网站就不起作用。由于applet是在客户端处理数据的,所以能够节约服务器端资源,提高运行速度,这样就可以支持更快更强大的应用程序,可以添加一些功能如要素流。
要使用IMSMap applet,用户必须能够与它进行交互。客户可以通过工具条或HTML输入窗体与applet进行通讯。例如,如果你要在世界地图上放大到某个国家,可以点击Zoom In 工具。由于在function.js文件中,你已经通过为这个按纽分配了一个IMSMap请求。所以每当客户端用户点击这个按纽时,相应的请求就会被执行。
对于Java Custom浏览器来说,还有其它三个applets也被发送到浏览器当中,即内容表applet(IMStoc),概略地图applet(IMSoverview)和比例尺栏applet(IMSscalebar)。它们都依赖于IMSMap applet。例如,概略图就依赖于地图框架中打开的是什么图层。所以实际上,这三个applets都是IMSMap apple的"附件"。
理解Java浏览器的对象模型
IMSMap apple中使用的元素,例如 applet对象本身(parent.mapFrame.IMSMap)、图层、颜色、专题符号等等。
对象能够实现一定的功能,请求就是用来告诉对象去执行相应的功能的,许多请求包含了提供更加具体信息的参数。例如,漫游请求就需要一个字符串参数,用来描述向那个方向漫游(如"panEast","panWest","pan south")。注意即使请求没有参数,也必须用一个空的括号"()"。
对象和请求都有一定的等级体系,越概括的对象越放在上面(如IMSMap apple对象),而越具体的对象越放在下面(如线图层的ValueMapRenderer)。
许多Java Applet API方法都返回一个对象。例如parent.mapFrame.IMSMap.getExtent()就返回一个范围对象。你可以将返回的对象赋给一个变量,然后在后面的语句中调用这个变量。
连锁请求允许将基本的Object.Method语句扩充成包含了许多请求的语句(Object.出息Method.Method.Method etc.)。系统在解析这种语句时每次都执行一个object.method对,返回的对象又被下一个method引用,以此类推。在编写连锁请求语句时,要注意确保每个object.method对返回的对象要正好是下一个method的object,否则程序容易出现错误。 Java Custom浏览器对象模型举例
上面的对象模型图显示了IMSMap applet对象之间的关系。这种图对于了解对象之间的关系,哪些方法可以调用来获取信息以及改变一个对象等来说,是个重要的资源。
上面的例子是一个获取某个特定图层的地图范围(本例中是要获得该图层的最大和最小的x,y坐标)的过程示意。
IMSMap applet对象的等级最高是applet本身,可以通过下列JavaScript代码来访问--parent.mapFrame.IMSMap。从这点出发,你可以调用一些次一级的对象。
该例中,可以用applet对象请求获取某一特定图层。语句parent.mapFrame.IMSMap.getLayer("CANADA")调用了地图 applet对象,并且通过它得到一个名叫"canada"的图层。该语句将返回一个图层对象。可以将这个图层对象保存在某个变量中供后面调用。
有了这个图层对象以后,你就可以得到它的范围了。使用getExtent()方法,就可以得到Canada这个图层的范围,并作为一个范围对象返回。最后,你可以从图层对象中获取一些特定信息,本例中可以获得地图范围的最大和最小的x,y坐标(使用getXmin,getYmin,getXmax,getYmax请求)。这些方法返回双精度对象(实数)。这些值也可以保存在变量中供今后使用。
Java浏览器对象模型
ArcIMS的联机帮助对于理解Java浏览器对象模型,对象及对象模型等级,每个对象可以使用的方法等是一个很有用的资源。但是,Beta 3版本的对象模型并没有包含在ArcIMS的联机帮助中。
在线帮助是以功能的分类来组织的。对于每一类功能,帮助窗口的右侧都有详细的描述,并且列出了这一功能可以使用的对象和方法。
相关阅读 更多 +