要创建您自定义的 web 应用程序模板,可下载一个现有模板并进行修改,也可更新现有 web 应用程序以使用您的门户中的内容,或使用一种 ArcGIS Web API 构建新的 web 应用程序。无论您以何种方式创建自己的模板,都要使用 URL 参数和地图。如果要创建群组模板,并且要考虑其他条件以便使用 Bing 底图、访问非公开地图和使用需要代理或跨域资源共享 (CORS) 的资源,则可以使用群组。您也可以将项目添加到您的门户中,如果您的组织打算使用模板库中的模板,则将它与组织中的一个模板组进行共享。
Portal for ArcGIS 包含 ArcGIS API 3.15 for JavaScript。无需为新建的应用程序模板托管自己的 API 并将门户指向本地版本;web 应用程序模板将自动引用已安装的 API。本地安装的 API 通常位于 https://webadaptorhost.domain.com/webadaptorname/jsapi/jsapi。
警告:
请勿更改随 Portal for ArcGIS 提供的 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 函数提供对响应对象的访问权限,该响应对象提供对地图对象、图层等的访问权限。
注册应用程序模板
如果您在应用程序模板中使用安全项目,则首先需要将其注册到平台。要执行此操作,请添加新的 Web 制图应用程序项目并将该 URL 设置为 Web 服务器上托管的应用程序模板。
添加项目后,您需要注册应用程序。由于这是一个 web 应用程序,请将类型设置为 Browser,并使 Redirect URI 指向模板应用程序的 URL。
注册应用程序后,现在您应具有唯一的应用程序 ID。
使用身份管理器,以便识别已注册的应用程序 ID。有关详细信息,请参阅包括在 ArcGIS API for JavaScipt 中的 OAuth 基本和 OAuth 弹出窗口 OAuth 样本。
群组
群组模板将指定群组中的内容显示为应用程序。
ArcGIS REST API 提供对您门户中内容的访问权限。您可以使用它基于输入群组的 ID 来检索群组内容。
在此示例中,进行查询以查找带有输入 ID 的群组。
var portal = new esri.arcgis.Portal('https://webadaptorhost.domain.com/webadaptorname/');
dojo.connect(portal, 'onLoad',function(){
portal.queryGroup(groupid).then(function(response){
var group = response.results[0];
});
});
查找到该群组后,便可进行查询以从群组中检索项目。 在此示例中,查询该群组,以找到类型为 Web Map 或 Web Mapping Application 的五个项目。var queryParams = {
q: 'type:"Web Map" -type:"Web Mapping Application"',
num: 5
};
group.queryItems(queryParams).then(function(response){
var groupItems = response.results;
});
其他考虑因素
Web 应用程序通常旨在处理多种不同类型的内容,因此您可能需要设置模板以处理带有 Bing 地图底图、非公开内容等等的地图。下面列出了特别注意事项。
Bing 地图密钥
如果您想要显示的地图中的任意地图使用 Bing 地图底图,则需要将 Bing 地图密钥添加在应用程序中。Bing 地图密钥作为 createMap 方法的参数来提供。
代理和 CORS 支持
如果应用程序进行跨域请求,您将需要启用跨域资源共享 (CORS) 或向您的应用程序添加代理。
将模板添加到您的门户中
创建模板并将其托管在您的 Web 服务器上后,将模板作为 Web 应用程序项目添加到您的门户中,并指定此应用程序的 URL。选择可配置作为用途。选择 JavaScript 作为 API。
请确保项目中包含描述性的标题和摘要,以便当用户将鼠标悬停在模板库中的模板项目上时会显示此相关信息。也可以创建包含应用程序文件的 ZIP 文件并将其附加到项目以提供下载功能。
使用您组织的应用程序库中的模板
如果要使用组织的地图查看器应用程序库或群组应用程序库中的模板,则需要将项目共享到用于该库的群组。然后您组织的管理员可以通过配置地图查看器或配置群组来使用包括模板的群组。