MapGuide应用程序演示样例——你好,MapGuide!

时间:2021-05-03 12:25:06

图 3‑4显示了基于MapGuide的Web应用程序的开发流程,整个开发流程能够分为五个阶段。图中,矩形代表任务,椭圆形被任务使用的或被任务创建的实体,箭头代表数据流。

1) 载入文件类型的数据,配置到外部数据库的连接,通过联接(Join)一个要素源到还有一个要素源扩展要素数据。

2) 通过引用要素源的数据和为要素应用样式创建图层。

3) 将图层结合起来创建地图。

4) 通过Internet或Intrant公布地图,使用户能够通过client浏览地图。

5) 使用MapGuide API为server端和client添加新的功能。

MapGuide应用程序演示样例——你好,MapGuide!

3‑4 MapGuide应用程序开发流程

在开源版MapGuide的站点上,提供了美国威斯康辛州希博伊根(Sheboygan)县的地图数据(http://download.osgeo.org/mapguide/releases/2.0.0/samples/Sheboygan.mgp)供二次开发者学习和使用。该地图数据是一个MapGuide资源包文件,它使用了zip文件格式,将它的文件后缀名改动为zip后能够使用WinZip或WinRAR等压缩软件将当中的文件提取出来。使用MapGuide站点管理器(Site Administrator)能够载入资源包,将资源包中包括数据、图层、地图等信息一次性地载入到MapGuideserver,详细步骤请參考8.2.6.1。

本节中我们通过将该地图数据公布到Internet,而且加入一个“Hello MapGuide”命令为例来介绍MapGuide的开发流程。为了具体介绍MapGuide的开发流程,我们须要将此资源包解压缩,仅仅使用当中的SDF数据文件。解压缩后该资源包文件后,会在文件夹“/Library/Samples/Sheboygan/Data”找到例如以下SDF文件。当中,“”代表解压缩后文件的根文件夹。

l BuildingOutlines.FeatureSource_DATA_BuildingOutlines.sdf

l CityLimits.FeatureSource_DATA_CityLimits.sdf

l HydrographicLines.FeatureSource_DATA_HydrographicLines.sdf

l HydrographicPolygons.FeatureSource_DATA_HydrographicPolygons.sdf

l Islands.FeatureSource_DATA_Islands.sdf

l LandUse.FeatureSource_DATA_LandUse.sdf

l Parcels.FeatureSource_DATA_Parcels.sdf

l Rail.FeatureSource_DATA_Rail.sdf

l RoadCenterLines.FeatureSource_DATA_RoadCenterLines.sdf

l Soils.FeatureSource_DATA_Soils.sdf

l Trees.FeatureSource_DATA_Trees.sdf

l VotingDistricts.FeatureSource_DATA_VotingDistricts.sdf

1. 载入数据

在创建地图之前,先须要让MapGuideserver可以訪问数据,MapGuide Studio为此提供了三种方法。

l 载入文件类型的数据,如DWG、SHP、SDF或图像文件,这样的方式会将数据上传到MapGuideserver的资源库中,可以较快地訪问数据。

l 配置到SDF、SHP和图像文件的连接,这样的方式仅仅是在MapGuideserver的资源库中保存一个到数据源的链接,能够将数据报存在MapGuideserver或其它计算机上。

l 配置到数据库或Web服务的连接,如Oracle、ArcSDE、SQL Server或WMS。

数据源类型

方法

Autodesk DWG, DXF

载入

Autodesk DWF

载入

Autodesk SDF

载入或配置连接

SHP (ArcView shapefile)

载入或配置连接

Raster formats (.Bil, .bmp, .cal, .ecw, .jpg/.jpeg, .png, .sid, .tif/.tiff, .tga)

载入或配置连接

ArcSDE database

配置连接

MySQL

配置连接

Microsoft SQL Server

配置连接

ODBC databases (Microsoft Access, Excel etc.)

配置连接

Oracle database

配置连接

Web map service (WMS)

配置连接

Web feature service (WFS)

配置连接

表 3‑1 不同数据类型的訪问方式

本节中我们使用载入的方法,MapGuide Studio提供了载入过程(Load Procedure)来简化数据的载入。载入过程本质上就是一些用于载入数据的脚本,你能够使用载入过程将数据自己主动载入到server。载入过程中定义了原始数据的位置、转化的规则、数据在server上的目标位置等信息。你可周期性地运行载入过程,更新server上文件类型的空间数据库,以保证server上的数据是最新的。

载入Sheboygan地图数据的过程例如以下:

1) 创建资源目录“Samples/Sheboygan”。

为了有效地组织地图数据,我们通常会创建一些资源目录,将不同种类的资源放在不同的目录下。在网站浏览器(Site xplorer)中选中根节点,选择右键菜单“New -> Folder”,就能够创建一个目录。

2) 创建载入过程

选择文件夹“/Library/Samples/Sheboygan/Data”下的全部SDF文件,拖拽它们到网站浏览器(Site Explorer)中资源文件夹“Samples/Sheboygan”,一个新的载入过程面板就出如今网站浏览器右方,它包括了要载入的文件列表,我们也能够加入很多其它文件到这个文件列表中。最后,点击“Load Resources”button,開始载入数据。

在新的载入过程面板中,“How Do You Want To Transform The Data”部分用于选择数据的坐标系。一般而言,仅仅有在数据自身不包括坐标系信息的时候,才须要设置数据的坐标系,本演示样例中无需设置此部分内容。“Where Do You Want To Load The Resources”部分用于选择载入到的目标位置,本演示样例中我们设置它的值为“Library://Samples/Sheboygan”。

MapGuide应用程序演示样例——你好,MapGuide!

图 3‑5 载入过程的用户界面

3) 保存载入过程

假设打算周期性地运行载入过程,更新server上文件类型的空间数据库,以保证server上的数据是最新的,那么须要保存这个新建的载入过程。点击MapGuide Studio工具栏上的“Save”button,保存该载入过程。

2. 创建图层

MapGuide应用程序演示样例——你好,MapGuide!

3‑6 图层编辑器的用户界面

在使用载入过程载入Sheboygan地图数据时,假设在“Where Do You Want To Load The Resources”部分选中了复选框“Layer(s)”,那么载入过程会在载入数据的同一时候创建图层。假设没有选中复选框“Layer(s)”,那么能够使用MapGuide Studio的图层编辑器能够创建一个图层。在图层编辑器中,我们能够为图层创建样式,也能够预览图层数据,它的用户界面如图 3‑6所看到的。

载入Sheboygan地图数据创建图层的过程例如以下:

1) 创建资源目录“Samples/Sheboygan/Layers”。

右键点击网站浏览器的目录“Samples/Sheboygan”,选择菜单“New->Folder”创建资源目录“Layers”。

2) 创建图层

首先,右键点击新建资源目录“Layers”,选择菜单“New->Layer”打开图层编辑器。然后,在“Data resource used in this layer”部分,选择资源目录“Samples/Sheboygan/Data”下的数据。

3) 保存图层

点击MapGuide Studio工具栏上的“Save”button,保存该图层到资源目录“Samples/Sheboygan/Layers”中。

如此重复,为资源目录“Samples/Sheboygan/Data”下的每一个数据创建一个图层。

3. 创建地图

一张地图能够由一个或多个图层组成,同一时候多张地图能够包括同一个图层,使用地图编辑器能够创建和编辑一张地图。为了有效地组织地图中的图层,我们还常常将多个图层组织成一个图层组。

载入Sheboygan地图数据创建地图的过程例如以下:

1) 创建资源目录“Samples/Sheboygan/Maps”。

右键点击网站浏览器的目录“Samples/Sheboygan”,选择菜单“New->Folder”创建资源目录“Maps”。

2) 创建地图

首先,右键点击新建资源目录“Maps”,选择菜单“New->Map”打开图层编辑器。然后,在“Layers”部分,点击buttonMapGuide应用程序演示样例——你好,MapGuide!创建一个图层组“Base Map”。接着,选中新建的图层组,点击buttonMapGuide应用程序演示样例——你好,MapGuide!加入选择资源目录“Samples/Sheboygan/Layers”的图层到该图层组。反复此操作,加入如图 3‑7所看到的的图层组和图层。

对于“Setting”部分的内容,一般不须要改动。MapGuide Studio会将地图的坐标系(Coordinate System)设置为第一个增加的、带坐标系的图层的坐标系,而且会依据增加图层的范围(Extent)自己主动设置和改动地图的初始视图范围(Initial View)。

3) 保存地图

点击MapGuide Studio工具栏上的“Save”button,将该地图命名为“Sheboygan”,保存到资源目录“Samples/Sheboygan/Maps”中。

MapGuide应用程序演示样例——你好,MapGuide!

3‑7 地图编辑器的用户界面

4. 创建Web布局

当创建了一张地图之后,你须要创建一个基本Web布局或灵活Web布局用于定义MapGuide Viewer的用户界面和可用的操作,这样用户才可以通过Internet或Intranet浏览和操作地图。基本Web布局支持DWF Viewer和AJAX Viewer,它是一种比較老的Web布局,提供了比較有限的功能定制Viewer的用户界面。灵活Web布局是一个基于Fusion的Web布局,它使用模板来定义Viewer的用户界面,用户可以使用MapGuide Studio改动这些模板,它为用户定制MapGuide Viewer的用户界面提供了很大的灵活性。眼下,灵活Web布局仅仅支持Fusion Viewer。本节中,我们将分别为Sheboygan地图创建一个基本Web布局和灵活Web布局。

为Sheboygan地图创建基本Web布局的过程例如以下:

1) 创建资源目录“Samples/Sheboygan/Layouts”。

右键点击网站浏览器的目录“Samples/Sheboygan”,选择菜单“New->Folder”创建资源目录“Layouts”。

2) 创建基本Web布局

首先,右键点击新建资源目录“Layouts”,选择菜单“New->Web Layout->Basic Web Layout”打开基本Web布局编辑器。然后,在“Map resource used in this layout”部分,选择在Web布局中显示的地图,一个基本Web布局仅仅能显示一张地图。本例中,我们选择资源目录“Samples/Sheboygan/Maps”下的地图“Sheboygan”。

我们能够依据须要改动“Setting”和“Toolbar and Menus”部分的内容,比如“Text for browser title bar”能够用于设置浏览器中打开Viewer时标题栏中显示的标题,“Display these components in the Viewer”用于设置Viewer中显示那些组件。

3) 保存基本Web布局

点击MapGuide Studio工具栏上的“Save”button,将该Web布局命名为“Basic Web Layout”,保存到资源目录“Samples/Sheboygan/Layouts”中。

4) 预览Web布局

点击“Preview in browser using DWF Viewer”文本框右边的“Go”button能够使用DWF Viewer在浏览器中预览Web布局;点击“Preview in browser using AJAX Viewer”文本框右边的“Go”button能够使用AJAX Viewer在浏览器中预览Web布局。用户也能够将文本框中的URL复制到浏览器的地址栏中,从而预览此Web布局。

须要注意的是,假设要在浏览器中预览Web布局,必须保存过该Web布局,浏览器中预览的是最后一个版本号的Web布局。假设希望在没有保存Web布局之前预览该Web布局,仅仅能使用Web布局编辑器的“Web Preview”,点击buttonMapGuide应用程序演示样例——你好,MapGuide!就可以预览它。

MapGuide应用程序演示样例——你好,MapGuide!

图 3‑8 基本Web布局编辑器的用户界面

为Sheboygan地图创建灵活Web布局的步骤与创建基本Web布局的步骤基本同样,例如以下:

1) 创建资源目录“Samples/Sheboygan/ FlexibleLayouts”。

右键点击网站浏览器的目录“Samples/Sheboygan”,选择菜单“New->Folder”创建资源目录“FlexibleLayouts”。

2) 创建灵活Web布局

首先,右键点击新建资源目录“FlexibleLayouts”,选择菜单“New->Web Layout->Flexible Web Layout”打开灵活Web布局编辑器。然后,在“Select a template for the web layout”部分,为Web布局选择一个模板,不同的模板定义了不同的Fusion Viewer的用户界面风格。接着,选中“Config components of the selected components”部分的“Map”标签,在“Map resource used in this layout”部分选择资源目录“Samples/Sheboygan/Maps”下的地图“Sheboygan”。

我们能够依据须要改动“Config components of the selected components”部分的内容,从而定制任务窗格、工具栏、图例、右键菜单、选择窗格、状态栏用户界面组件。

3) 保存灵活Web布局

点击MapGuide Studio工具栏上的“Save”button,将该Web布局命名为“Aqua”,保存到资源目录“Samples/Sheboygan/ FlexibleLayouts”中。

4) 预览Web布局

点击button“View in Browser…”,能够使用Fusion Viewer在浏览器中预览Web布局。用户也能够将文本框中的URL复制到浏览器的地址栏中,从而预览此Web布局。

与基本Web布局同样,假设要在浏览器中预览Web布局,必须保存过该Web布局。假设希望在没有保存Web布局之前预览该Web布局,仅仅能使用Web布局编辑器的“Web Preview”,点击buttonMapGuide应用程序演示样例——你好,MapGuide!就可以预览它。

MapGuide应用程序演示样例——你好,MapGuide!

图 3‑9 灵活Web布局编辑器的用户界面

5. 创建MapGuide应用程序

记得在学习很多编程语言的时候,教授的第一个程序大多是“Hello, World!”,如今让我们也体验一下怎样使用MapGuide实现你的第一个MapGuide应用程序——“Hello, MapGuide!”。 图3‑10显示了这个程序在AJAX Viewer中的执行效果,点击“Hello MapGuide”button,就会弹出一个对话框显示字符串“Hello, MapGuide!”。

对于基本Web布局和灵活Web布局,实现上述功能的步骤不尽同样,以下我们分别介绍怎样在基本Web布局和灵活Web布局中实现这些功能。

MapGuide应用程序演示样例——你好,MapGuide!

3‑10 “你好,MapGuide!”程序演示样例在AJAX Viewer中的执行效果

5.1 在基本Web布局中创建“你好,MapGuide!”程序

在基本Web布局中创建“你好,MapGuide!”程序须要下面三步:

1) 创建自己定义命令“Hello MapGuide”。

MapGuide支持两类自己定义命令“Invoke JavaScript”和“Invoke URL”。“Invoke JavaScript”用于调用JavaScript脚本,这写JavaScript脚本有浏览器直接执行,主要用于和Viewer进行交互,可以调用Viewer API,属于client命令;“Invoke URL”用于调用PHP、ASP.NET或JSP编写的Webserver扩展页面(Web Server Extensions Page),这些Webserver扩展页面可以调用MapGuide Web API,属于Webserver端命令。

本节中,我们将使用“Invoke JavaScript”调用JavaScript函数alert(…)弹出一个“Hello, MapGuide!”对话框。

首先,在网站浏览器中选择一个之前创建的基本Web布局,双击此节点打开基本Web布局编辑器。然后,点击基本Web布局编辑器头部的超链接“New Commands”,打开如图3‑11所看到的的用户界面。接着,点击下拉button“Add -> Invoke Script”创建一个“Invoke Script”类型的命令。最后,在“Additional Parameters”标签页中输入JavaScript脚本“alert("Hello, MapGuide!");”。

普通情况下,我们还会为每一个命令赋予一个有意义的名称、图标、工具提示等,在“Setting”标签页中能够改动这些命令属性。本节中,我们将此命令命名为“Hello MapGuide”,设置工具提示为“Hello MapGuide”,图标为默认图标。

MapGuide应用程序演示样例——你好,MapGuide!

3‑11 基本Web布局用于创建命令的用户界面

2) 将“Hello MapGuide”命令加入到MapGuide Viewer的工具栏。

要调用这个新建的命令,须要将这个命令放置在工具栏、上下文菜单或任务栏菜单。本节中,我们将这个新建的命令放置在工具栏上。

首先,点击基本Web布局编辑器头部的超链接“Toolbar and Menus”,打开如图3‑12所看到的的用户界面。接着,将右面命令列表中的“Hello MapGuide”命令拖拽到左面的工具栏树形列表中。

MapGuide应用程序演示样例——你好,MapGuide!

3‑12 加入命令到Viewer工具栏的用户界面

3) 保存改动后的Web布局。

保存改动的Web布局后,拷贝“Preview in browser using DWF Viewer”文本框或“Preview in browser using AJAX Viewer”文本框中的URL复制到浏览器的地址栏中,就能够使用DWF Viewer或AJAX Viewer在浏览器中执行该应用程序了。

5.2 在灵活Web布局中创建“你好,MapGuide!”程序

灵活Web布局提供了一系列Widget以实现一些通用的功能,通过对这些Widget进行简单的定制能够满足用户某些特定的需求,比如它提供了“Invoke Script”和“Invoke URL”Widget,这两个Widget能够实现和基本Web布局中“Invoke Script”和“Invoke URL”命令同样的功能。本节中,我们使用“Invoke Script”Widget实现“你好,MapGuide!”程序。

在灵活Web布局中创建“你好,MapGuide!”程序须要下面三步:

1) 创建“Hello MapGuide”组件。

首先,在网站浏览器中选择一个之前创建的灵活Web布局,双击此节点打开灵活Web布局编辑器,展开“Config components of the selected template”会显示如图3‑13所看到的的用户界面。然后,选择“Toolbar (Primary)”标签页,点击“Components available in this layout”部分的button“New”,会弹出如图3‑14所看到的的对话框。接着,选择“Invoke Script”组件,点击“OK”button将它增加当前Web布局。最后,在“Parameters for the selected item”部分的“ID”文本框中输入新建组件的ID“Hello MapGuide”,“Script to invoke”文本框中输入JavaScript脚本“alert("Hello, MapGuide!");”。假设须要,还能够设置组件的工具提示、图标等属性信息。

MapGuide应用程序演示样例——你好,MapGuide!

3‑13 灵活Web布局用于Viewer中组件的用户界面

MapGuide应用程序演示样例——你好,MapGuide!

3‑14 灵活Web布局用于创建新组件的用户界面

2) 将“Hello MapGuide”命令加入到Fusion Viewer的工具栏。

在“Components available in this layout”中选中新建的“Hello MapGuide”组件,拖拽该组件到左面的“Items disaplayed in the container”列表中。

3) 保存改动后的Web布局。

保存改动的Web布局后,拷贝“Web address of this layout”文本框中的URL到浏览器的地址栏中,就能够使用Fusion Viewer在浏览器中执行该应用程序了,执行结果如图 3‑15所看到的。

MapGuide应用程序演示样例——你好,MapGuide!

3‑15 “你好,MapGuide!”程序演示样例在Fusion Viewer中的执行效果