创建 web 应用程序模板

要创建您自定义的 web 应用程序模板,可下载一个现有模板并进行修改,也可更新现有 web 应用程序以使用您的门户中的内容,或使用一种 ArcGIS Web API 构建新的 web 应用程序。无论您以何种方式创建自己的模板,都要使用 URL 参数和 web 地图。如果要创建组模板,并且要考虑其他条件以便使用 Bing 底图、访问非公开地图和使用需要代理或跨域资源共享 (CORS) 的资源,则可以使用组。您也可以将项目添加到您的门户中,如果您的组织打算使用模板库中的模板,则将它与组织中的一个模板组进行共享。

Portal for ArcGIS 包括 3.7 版本的 ArcGIS API for JavaScript。无需托管自己的 API 并将门户指向本地版本;web 应用程序模板将自动引用已安装的 API。本地安装的 API 通常位于 https://webadaptor.domain.com/arcgis/jsapi/jsapi

警告警告:

请勿更改随 Portal for ArcGIS 提供的 Web 应用程序模板文件,因为这些文件由门户管理,所以您对其进行的任何更改随后均有可能被门户覆盖。如果要自定义模板,请执行以下操作:

  1. 复制想要自定义的现有模板文件。
  2. 将副本放置在磁盘上的其他位置。
  3. 对模板副本进行自定义。
  4. 将其作为新模板添加至门户。

此主题涵盖如何创建 web 应用程序模板。创建模板后,便可将其设为可配置状态。可配置模板允许用户自定义应用程序的外观和行为。有关创建可配置模板的详细信息,请参阅向模板添加可配置参数

URL 参数

当您使用模板时,可通过将 webmapgroup ID 作为参数包含在模板 URL 中来指定要显示的 web 地图或组。使用 webmap 参数来指定 Web 地图 ID,使用 group 参数来指定组内容。要为自定义模板使用当前 web 地图或组,您需要将代码包括在应用程序中以便从 URL 中提取当前 web 地图或组 id。有关 web 地图参数的详细信息,请参阅使用 URL 参数

例如,可显示基本查看器模板中的欧洲底图 webmap

要执行此操作,从基本查看器 URL 开始:

http://www.arcgis.com/apps/OnePane/basicviewer/index.html

复制欧洲底图 URL 的 webmap= 部分:

http://www.arcgis.com/home/webmap/viewer.html?webmap=5421a40574914458892efe74f0149025

并将其添加到基本查看器 URL 的末尾:

http://www.arcgis.com/apps/OnePane/basicviewer/index.html?webmap=5421a40574914458892efe74f0149025

JavaScript API 具有可简化此过程的辅助方法 esri.urlToObject。此方法将 URL 参数转换为一个对象。

var webmap;
var urlObject = esri.urlToObject(document.location.href);

一旦具有对象形式的 URL 参数,您就可以访问各种输入。例如,可将 web 地图 URL 参数的值分配到名为 webmap_id 的变量。

var webmap_id = urlObject.query.webmap;
注注:

如果应用程序是可配置的,则还需要处理名为 appid 的 URL 参数,它定义配置设置。有关设置模板以读取配置文件的详细信息,请参阅向模板添加可配置参数

Web 地图

Web 地图模板旨在使用 地图查看器中当前显示的 web 地图。模板通常基于在 web 地图 URL 参数中所指定的 web 地图来创建地图。每个 Web API 都具有一个辅助方法,即使用 Web 地图 ID 中的信息来创建地图。

例如,可使用 ArcGIS API for JavaScript esri.arcgis.utils.createMap 方法基于输入 ID 来创建地图。也可以包含回调函数,它在完成对 esri.arcgis.utils.createMap 的同步请求时执行。

esri.arcgis.utils.createMap(webmap,"map",{
   mapOptions:{
     slider:false
   },
   bingMapsKey:bingMapsKey
}).then(function(response){
    map = response.map;
});
注注:

如果您的任何 web 地图中包含了 Bing 地图底图,则在使用 createMap 方法时需要指定 Bing 地图密钥。还有多种可指定的其他地图选项,例如是否要显示滑块、导航、属性等等。

callback 函数提供对响应对象的访问权限,该响应对象提供对地图对象、图层等的访问权限。

了解有关地图类别的详细信息

组模板将指定组中的内容显示为应用程序。有关创建库应用程序的详细信息,请参阅使用组创建应用程序

ArcGIS Portal API 提供对您的门户中内容的访问权限。您可以使用它基于输入组的 ID 来检索组内容。

在此示例中,进行查询以查找带有输入 ID 的组。

var portal = new esri.arcgis.Portal('https://webadaptor.domain.com/arcgis/');
dojo.connect(portal, 'onLoad',function(){
    portal.queryGroup(groupid).then(function(response){
        var group = response.results[0];
     });
});

查找到该组后,便可进行查询以从组中检索项目。

在此示例中,查询该组以找到类型为 Web 地图或 Web 制图应用程序的五个项目。

var queryParams = {
    q: 'type:"Web Map" -type:"Web Mapping Application"',
    num: 5
 };
group.queryItems(queryParams).then(function(response){
    var groupItems = response.results;
});

其他考虑因素

模板通常旨在处理多种不同类型的内容,因此您可能需要设置模板以处理带有 Bing 地图底图、非公开内容等等的地图。下面列出了特别注意事项。

Bing 地图密钥

如果您想要显示的 web 地图中的任何一个使用了 Bing 地图底图,则需要将 Bing 地图密钥添加在应用程序中。Bing 地图密钥作为 createMap 方法的参数来提供。

身份管理器

身份管理器简化了处理安全资源的流程。它处理提示用户出示凭据、生成令牌并将其附加到资源的流程。通过将身份管理器类别包括在模板应用程序中,模板将会处理公开和私有 web 地图。

将以下代码行包括在应用程序中以启用 IdentityManager:

dojo.require("esri.IdentityManager");

了解有关身份管理器的详细信息

注注:

您还需要在托管应用程序的 web 服务器上配置 SSL。

代理和 CORS 支持

如果应用程序进行跨域请求,您将需要启用跨域资源共享 (CORS) 或将代理添加到您的应用程序。

将模板添加到您的门户

创建了模板并将其托管在您的 Web 服务器上后,请将该模板作为 Web 制图应用程序项目添加到您的门户中,并指定此应用程序的 URL。选择可配置作为用途。选择 JavaScript 作为 API。有关在您的门户上添加应用程序的详细信息,请参阅添加应用程序

请确保项目中包含描述性的标题和摘要,以便当用户将指针悬停在模板库中的模板项目上时会显示此相关信息。也可以创建包含应用程序文件的 ZIP 文件并将其附加到项目以提供下载功能。

使用您组织的库中的模板

如果要使用组织的 web 制图模板库或组模板库中的模板,则需要将项目共享到正在用于模板的组。然后您组织的管理员可以通过配置地图查看器配置组来使用包括模板的组。

5/10/2014