使用 URL 参数创建和修改地图

使用 Map ViewerMap Viewer 经典版制作的地图包含底图、数据图层、范围、图例以及导航工具(如缩放工具、平移工具、地点查找器和书签)。 许多地图还包含交互式元素,例如底图库、测量工具、弹出窗口以及显示随时间变化的数据的按钮。

除了使用 Map ViewerMap Viewer 经典版创建地图,您还可以通过 URL 参数直接创建并修改地图。

例如,您可以使用显示生物群落和生态区的 URL 参数构建地图。

https://www.arcgis.com/apps/mapviewer/index.html?basemapUrl=https://basemaps.arcgis.com/arcgis/rest/services/World_Basemap_v2/VectorTileServer&url=https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/Resolve_Ecoregions/FeatureServer

Map Viewer 中查看此示例

例如,您可以在以下情况下使用 Map Viewer URL:

  • 如果您不需要包含大量参考或业务图层,并且不需要将特定样式应用于地图内容,请使用 URL 打开 Map Viewer。 例如,如果您的网站允许用户查找地址或查看与站点相关的单个图层,您可以在网站中包含一个链接,该链接将打开具有指定底图和所需的单个图层的 Map Viewer
  • 您需要从网站或电子邮件链接到已保存的 web 地图。 您可以使用 URL 打开特定 web 地图。

URL 中包含的内容

Map Viewer 经典版Map Viewerhttps://www.arcgis.com/home/webmap/viewer.html? 中,URL 通常以 https://www.arcgis.com/apps/mapviewer/index.html? 开头,并包含如下所列的一个或多个查询参数。 要包含多个参数,请使用“与”号 (&) 分隔参数。 您将在本页中找到使用多个参数的示例。

请参阅以下示例:

https://www.arcgis.com/apps/mapviewer/index.html?center=20,45&level=8

Map Viewer 中查看此示例

注:

如果将 URL 参数中的任何资源作为 HTTP 提供,则必须在 URL 中将 HTTP 替换为 HTTPS,并且仅使用 HTTPS 访问所有资源。

对查询参数进行编码

必须对所有查询参数进行编码。 URL 编码可确保将有效的字符发送至 ArcGIS Online。 编码使用 % 后跟其等效的十六进制数来替换所有无效的字符。

例如,以下是一串未编码的 URL 参数:

basemapUrl=https://services.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer

下面是同一个已编码的参数:

basemapUrl=https%3A%2F%2Fservices.arcgisonline.com%2FArcGIS%2Frest%2Fservices%2FOcean%2FWorld_Ocean_Base%2FMapServer

同时还必须对参数中的参数进行编码,例如:

urls=https%3A%2F%2Fmaps.ngdc.noaa.gov%2Frest%2Fservices%2Fweb_mercator%2Ftrackline_gravity%2FMapServer%2Chttps%3A%2F%2Fmaps.ngdc.noaa.gov%2Frest%2Fservices%2Fweb_mercator%2Fhazards%2FMapServer%3Flayers%3Dshow%3A5%2C6

Internet 中提供了许多用于生成编码 URL 的免费站点和工具,例如,https://www.urlencoder.io/。 为方便阅读,将不再对本主题中的其余示例进行编码。 单击示例后的在 Map Viewer 中查看此示例链接,可在 Web 浏览器中查看已编码的 URL。

打开保存的地图

要打开使用 Map ViewerMap Viewer 经典版创建的已保存地图,请使用 webmap= 和地图的唯一 ID。

在此示例中,ID 为 75a3ce8990674a5ebd5b9ab66bdab893 的 web 地图将在 Map Viewer 中打开:

https://www.arcgis.com/apps/mapviewer/index.html?webmap=75a3ce8990674a5ebd5b9ab66bdab893

Map Viewer 中查看此示例

在此示例中,ID 为 29990ur6423j1180p53f9t30019491 的 web 地图将在 Map Viewer 中打开,且范围设置为 -117.996342,33.841078,-117.993692,33.844375:

https://www.arcgis.com/apps/mapviewer/index.html?webmap=29990ur6423j1180p53f9t30019491&extent=-117.996342,33.841078,-117.993692,33.844375

定义底图

要定义底图,请将 basemapUrl= 设置为图层。 如果未定义底图,则将使用默认底图(世界地形图的底图)。

在此示例中,Map Viewer 将打开,并将 OpenStreetMap 用作底图:

https://www.arcgis.com/apps/mapviewer/index.html?basemapUrl=https://basemaps.arcgis.com/arcgis/rest/services/OpenStreetMap_v2/VectorTileServer&layers=9e2f2b544c954fda9cd13b7f3e6eebce

Map Viewer 中查看此示例

在此示例中,Map Viewer 打开时将世界自然地图用作底图,并且地图中存在项目 ID 为 9e2f2b544c954fda9cd13b7f3e6eebce 的业务图层:

https://www.arcgis.com/apps/mapviewer/index.html?basemapUrl=https://services.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer&layers=9e2f2b544c954fda9cd13b7f3e6eebce

包含参考图层

要在底图中包含一个参考图层,请将 basemapReferenceUrl= 设置为图层。 除 basemapUrl 参数外,必须使用 basemapReferenceUrl= 参数。

在此示例中,Map Viewer 打开时使用 World Imagery 底图图层,并将参考图层设置为 World Boundaries and Places 图层:

https://www.arcgis.com/apps/mapviewer/index.html?basemapUrl=https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer&basemapReferenceUrl=https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer

Map Viewer 中查看此示例

在此示例中,Map Viewer 打开时存在 World Imagery 地图图像图层,且底图设置为 World Imagery 底图图层:

https://www.arcgis.com/apps/mapviewer/index.html?basemapUrl=https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer&basemapReferenceUrl=https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer&layers=df610ec7afe74b1995a913ec1fc1284e

定义业务图层

要定义叠加底图的业务图层,可使用 webmap=layers=layerIds=url=urls=。 如果图层是网站中的项目,可使用 layers= 获取所有图层配置。 要从包含多个子图层的要素图层添加各个子图层,请使用 layerIds=。 如果图层不在网站中,可使用 url=urls=

layers= 参数接受单个项目 ID 或多个项目 ID。 对于多个图层,可使用以逗号分隔的 ID 列表 (&layers=<itemID>,<itemID>,<itemID>)。

请参阅以下示例:

https://www.arcgis.com/apps/mapviewer/index.html?webmap=8152694dd9594393a1db4d62d2020fe3&layers=9e2f2b544c954fda9cd13b7f3e6eebce,dece90af1a0242dcbf0ca36d30276aa3

Map Viewer 中查看此示例

layerIds= 参数接受单个图层 ID 或多个图层 ID。 如果要素图层包含多个子图层,使用 layerIds= 参数添加各个子图层。 对于多个子图层,使用逗号分隔 ID 列表 (&layerIds=0,1,2)。

请参阅以下示例:

https://www.arcgis.com/apps/mapviewer/index.html?layers=025063719c32408dbd4fb608faa28d2a&layerIds=0,2

Map Viewer 中查看此示例

url= 参数接受单个图层 URL。

请参阅以下示例:

https://www.arcgis.com/apps/mapviewer/index.html?url=https://services9.arcgis.com/RHVPKKiFTONKtxq3/arcgis/rest/services/USGS_Seismic_Data_v1/FeatureServer

Map Viewer 中查看此示例

使用 urls= 包括多个图层。 使用逗号对多个图层加以分隔。 地图范围基于列表中的最新图层或加载最慢的图层。 要缩放至特定的范围,应包含 extent= 参数。

请参阅以下示例:

https://www.arcgis.com/apps/mapviewer/index.html?urls=https://services9.arcgis.com/RHVPKKiFTONKtxq3/arcgis/rest/services/NOAA_METAR_current_wind_speed_direction_v1/FeatureServer,https://services9.arcgis.com/RHVPKKiFTONKtxq3/arcgis/rest/services/NOAA_storm_reports_v1/FeatureServer?layers=show:4&extent=-108,40,-85,31

Map Viewer 中查看此示例

定义比例级别并使地图居中

当您使用 webmapfind 参数时,Map Viewer 经典版 中的地图会自动设置比例。 如果您使用的是 webmap 参数,除非使用其他 URL 参数(例如 levelcenterextent)覆盖 Web 地图比例,否则地图会自动缩放至全图范围。 如果使用 find 参数,地图会自动缩放至找到位置的最佳范围。

要定义特定的比例级别,请使用 centerlevel 参数。 level 参数接受切片底图 REST 服务端点中列出的缓存比例的级别 ID。 该分辨率与比例成反比。 level 参数仅支持切片底图,而不支持通过动态地图服务和其他非切片数据创建的底图。

要将地图放在特定位置的中央,可通过地理坐标 (x,y) 或投影坐标 (x,y,WKID) 设置 center。 您可以使用逗号或分号作为分隔符。 如果数字使用逗号作为小数位,则使用分号。

注:

levelcenter 参数必须一起使用。 如果单独使用 level 参数,则将忽略此参数。

请参阅以下地理坐标示例:

https://www.arcgis.com/apps/mapviewer/index.html?center=20,45&level=4

Map Viewer 中查看此示例

请参阅以下投影坐标示例:

https://www.arcgis.com/apps/mapviewer/index.html?center=500000,5500000,102100&level=4

Map Viewer 中查看此示例

定义范围

使用 extent 定义地图范围。 extent 参数以 MinX,MinY,MaxX,MaxY 的形式使用地理坐标 (GCS),以 MinX,MinY,MaxX,MaxY,WKID 的形式使用投影坐标 (PCS)。 您可以使用逗号或分号作为分隔符。 如果数字使用逗号作为小数位,则使用分号。

请参阅以下地理坐标示例:

https://www.arcgis.com/apps/mapviewer/index.html?extent=-117.20,34.055,-117.19,34.06

Map Viewer 中查看此示例

请参阅以下投影坐标示例:

https://www.arcgis.com/apps/mapviewer/index.html?extent=-13079253.954115,3959110.38566837,-12918205.318785,4086639.70193162,102113

Map Viewer 中查看此示例

设置图层可见性

要为您在地图中打开的图层设置子图层的可见性,请使用 layers=show:

在此示例中,子图层 3 可见,但其他子图层不可见:

注:
如 REST 端点所示,子层编号从零 (0) 开始。
https://www.arcgis.com/apps/mapviewer/index.html?url=https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/BLS_Monthly_Unemployment_Current_14_Months/FeatureServer?layers=show:2&find=Pennsylvania

Map Viewer 中查看此示例

查找位置或要素以打开地图

要在打开地图后立即查找位置或要素,请使用 find。 地图会自动缩放到最接近的匹配位置,并向地图中添加注释标记。 find 参数接受单行地址、部分地址(例如仅城市或仅国家/地区)、地名、经纬度坐标以及可搜索图层中的要素(如宗地标识号 (PIN) 1916352001)。

下列示例使用的是单行地址:

https://www.arcgis.com/apps/mapviewer/index.html?find=380 new york st,redlands,ca

Map Viewer 中查看此示例

提示:

要在可搜索图层中查找位置或要素,可以在唯一的地图 ID 中包含 webmap= 参数

添加点

要向地图添加点,请使用 marker=<x>,<y>。 还可以添加以下可选属性:

  • <wkid> - 要添加到地图的 x,y 坐标的空间参考。 如果不包含 WKID,则使用 GCS 坐标。
  • <encoded title> - 点弹出窗口的标题。 如果不包含标题,则该弹出窗口将为空。
  • <encoded icon URL> - 点的符号。 如果不包含符号,则使用蓝色标记符号。
  • <encoded label> - 点符号旁的标注。

示例

下列示例使用的是分号分隔符:

https://www.arcgis.com/apps/mapviewer/index.html?marker=-79.234826;38.147884;;Race start and finish;;Grindstone 100 Ultra Marathon

Map Viewer 中查看此示例

注意事项

向地图添加点时,请注意以下几点:

  • Map Viewer 经典版中,点以指定的 x,y 位置坐标添加到新的地图注释图层中。
  • 添加点需要 <x>,<y> 坐标。
  • 您必须对 titleiconlabel 参数进行编码
  • 必须按以下顺序添加属性:marker=<x>,<y>,<wkid>,<encoded title>,<encoded icon URL>,<encoded label>
  • 您可以使用逗号或分号作为分隔符。 如果数字使用逗号作为小数位,则使用分号。
  • 使用空值。 不要使用空格。 例如,要指定标注且不指定任何其他可选属性,请将标注添加为第六个参数,同时其他参数为空值 (x;y;;;;label)。
  • 如果希望地图放大(同时该点居中),则添加 level 参数。
  • 您可以编辑地图注释图层并将其保存为地图或项目。
  • 组织账户可使用该点获取方向以及执行分析

隐藏“详细信息”窗格

注:

目前,此功能仅在 Map Viewer 经典版 中受支持。 该功能将在 Map Viewer 的未来版本中提供。

要隐藏 Map Viewer 经典版详细信息窗格,请使用 mapOnly=true

在此示例中,ID 为 8505192e747d440098523e9e64419710 的已保存 web 地图在 Map Viewer 经典版中打开,但“详细信息”窗格被隐藏:

https://www.arcgis.com/home/webmap/viewer.html?webmap=8505192e747d440098523e9e64419710&mapOnly=true

Map Viewer 经典版中查看此示例