创建 web 应用程序模板
要创建您自己的模板,可下载一个现有模板并进行修改,也可更新现有 web 应用程序以使用 ArcGIS Online 中的内容,或使用一种 ArcGIS Web API 构建新 web 应用程序。无论您以何种方式创建自己的模板,都要使用 URL 参数和 web 地图。如果要创建组模板,并且要考虑其他条件以便使用 Bing 底图、访问非公开地图和使用需要代理或跨域资源共享 (CORS) 的资源,则可以使用组。您也可以将项目添加到 ArcGIS Online 中,如果您的组织打算使用您的模板库中的模板,则将它与组织地图模板或组模板组进行共享。
![提示 提示](rsrc/tip.png)
此主题涵盖如何创建 web 应用程序模板。创建应用程序后,便可将其设为可配置状态。可配置模板允许用户自定义应用程序的外观和行为。有关创建可配置模板的详细信息,请参阅向模板添加可配置参数。
URL 参数
当您使用模板时,可通过将 webmap 或 group 参数包括在模板 URL 中来指定要显示的 web 地图或组。模板通过指定 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;
![注 注](rsrc/note.png)
如果应用程序是可配置的,则还需要处理名为 appid 的 URL 参数,它定义配置设置。有关详细信息,请参阅将模板设置为可配置。
Web 地图
Web 地图模板旨在使用 ArcGIS.com 地图查看器中当前显示的 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;
});
![注 注](rsrc/note.png)
如果您的任何 web 地图中包括了 Bing 地图底图,则在使用 createMap 方法时需要指定 Bing 地图密钥。还有多种可指定的其他地图选项,例如是否要显示滑块、导航、属性和更多内容。
callback 函数提供对响应对象的访问权限,该响应对象提供对地图对象、图层和更多内容的访问权限。
组
组模板将指定组中的内容显示为应用程序。有关创建库应用程序的详细信息,请参阅使用组创建应用程序。
ArcGIS Portal API 提供对 ArcGIS Online 中内容的访问权限。您可以使用它基于输入组的 ID 来检索组内容。有关使用 ArcGIS Portal API 的详细信息,请参阅关于 ArcGIS Portal API。
在此示例中,查询 ArcGIS Online 来查找带有输入 ID 的组。
var portal = new esri.arcgis.Portal('http://www.arcgis.com');
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");
![注 注](rsrc/note.png)
您还需要在托管应用程序的 web 服务器上配置 SSL。
将模板添加到 ArcGIS Online 上
创建了模板并将其托管在您的 Web 服务器上后,请将该模板作为可配置 Web 制图应用程序项目添加到 ArcGIS Online 中。选择“Web 制图”作为项目类型。选择“可配置”作为用途。有关在 ArcGIS Online 上添加项目的详细信息,请参阅添加应用程序。也可以通过 ArcGIS Portal API 来添加项目。
请确保项目中包含描述性的标题和摘要,以便当用户将指针悬停在模板库中的模板项目上时会显示此相关信息。也可以创建包含应用程序文件的 ZIP 文件并将其附加到项目以提供下载功能。