“地图”微件可用于显示 2D 和 3D 地理信息。 您可以启用地图中的工具,例如缩放、定位、搜索和测量。
示例
使用此微件可支持以下应用程序设计要求:
- 您需要显示 2D 和 3D 地图的比较。 您可以添加两个“地图”微件并创建触发器和操作,以在与任一地图进行交互时同步视图。
- 您想要单击地图上的要素,并在“要素信息”微件中显示记录。
- 您需要单击地图上的要素来过滤“列表”微件。
用法说明
可以显示单个地图,也可以包含一个选项以在两个地图之间进行切换。 您可以通过添加更多“地图”微件来在一个应用程序中包含多个地图。
“地图”微件需要数据源,包括 Web 地图和 Web 场景。 包括工具时,它们会根据设计模式和最终应用程序中微件的大小自动定位在地图上。
提示:
如果您有一个包含多个图层的 web 地图或 web 场景,并且想要指定哪些图层默认显示在不同的“地图”微件中,您可以在数据选项卡上多次添加相同的 web 地图或 web 场景,选择在每个地图或场景副本上隐藏不同的子图层,并将每个副本连接到不同的“地图”微件。
设置
“地图”微件包括以下设置:
- 选择地图 - 为 Web 地图和 Web 场景添加数据源。
- 初始视图 - 设置将地图加载到微件中时的初始位置。
- 默认 - 继承自 Web 地图或 Web 场景的地图初始位置。
- 自定义 - 通过为地图创建自定义位置来修改初始视图。
- 工具 - 包括用于用户与地图交互的工具。
- 缩放 - 在地图上进行放大和缩小。
- 主页 - 将地图缩放到初始地图位置(范围)。
- 导航 - 包括地图平移和旋转工具。 当“地图”微件显示 3D Web 场景时,这些工具会出现。
- 定位 - 显示用户的当前位置。
- 罗盘 - 指示相对于 2D 或 3D 地图的当前视图的北方位置。
- 搜索 - 根据组织或门户的地理编码服务查找位置。 如果启用弹出窗口,搜索结果会显示弹出窗口。
- 图层 - 在地图上显示图层和符号列表,并允许用户将其打开或关闭。
- 底图 - 显示底图库。
- 测量 - 包括用于测量面积和距离的测量工具。 “测量”微件使用捕捉功能,指针可以捕捉到地图上的要素。 测量时,用户可以按住 Ctrl 键,临时关闭捕捉功能。
- 全屏 - 使用整个屏幕显示地图。
- 比例尺 - 在地图上包括一个比例尺,用于显示公制或非公制值的单位并动态响应各种坐标系。
- 选择 - 使用不同的选择工具和选择模式在地图上选择要素。 用户可以访问以下选择工具,并且可以选择完全包含在绘制的面中或者部分或完全包含在其中的要素。
- 矩形 - 单击并拖动以跨要素绘制矩形。
- 套索 - 单击地图以创建面的折点,或者使用指针进行绘制以创建手绘形状。 双击以关闭面的绘制并选择包含的要素。
- 圆形 - 单击并拖动以跨要素绘制圆形。
- 线 - 单击地图以创建线的折点。 双击以完成线的绘制并选择相交要素。
- 点 - 单击地图以放置点并选择相交要素。
用户可以通过以下 4 种方式来选择多个要素:
- 可以使用每个新的选择工具绘图来创建要素选择。 这是默认设置。
- 添加至当前选择集(按住 Shift 的同时进行绘制)。
- 从当前选择集中移除要素(对于 Windows,按住 Ctrl 同时进行绘制;对于 Mac,按住 Cmd 同时进行绘制)
- 从当前选择集中选择要素(对于 Windows,按住 Ctrl+Shift 同时进行绘制;对于 Mac,按住 Cmd+Shift 同时进行绘制)。
当用户进行选择时,选择工具图标将变为进度图标。 如果用户选择大量要素,则选择过程可能需要较长时间。 用户可以单击进度按钮以停止选择过程。
- 范围导航 - 来回浏览用户在运行时已访问过的范围。
- 鹰眼图 - 添加可扩展的嵌入地图。 鹰眼图是主地图的较小版本,带有一个定位矩形,显示主地图的范围。 如果您单击并拖动定位矩形,主地图会缩放到该新位置。 此工具不会出现在小屏幕布局上。
- 工具布局 - 为大屏幕和中屏幕设备选择地图工具的布局。
注:
“地图”微件根据微件的高度自动隐藏工具,以使微件对中小屏幕设备的响应更快。 例如,如果“地图”微件的高度小于 465 像素,即使已在微件设置中打开了“测量”和“定位”工具,这些工具也会在中小屏幕上隐藏。 随着微件高度降低,将隐藏更多工具。 最后,“全屏”、“搜索”、“缩放”、“比例尺”和“罗盘”工具将消失。
- 选项
- 要素选择颜色 - 更改地图中所选要素的高亮显示颜色和透明度。 您可以自定义高亮显示填充和轮廓。
- 启用滚动缩放 - 启用鼠标滚轮缩放功能,以及在触摸屏上的单指地图平移功能。
- 启用弹出窗口 - 在地图上启用弹出窗口。 如果您的应用程序还包括要素信息微件,则可能需要关闭此设置。 如果数据源有相关数据,并且您在 Map Viewer 的弹出窗口中配置了相关记录,则可以在 Experience Builder 的弹出窗口中查看这些相关记录。
- 选择要素时显示弹出窗口 - 当用户在另一个微件(例如“表格”或“列表”)中选择地图要素时,将在地图上显示弹出窗口。
- 停靠弹出窗口 - 您可以默认停靠弹出窗口。 您可以将弹出窗口配置为在“地图”微件框架内的六个锚点之一处显示。 在运行时,用户仍然可以单击弹出窗口上的停靠和取消停靠按钮来更改弹出窗口的显示位置。
- 场景质量模式(对于 web 场景)- 通过平衡视觉效果和加载效率,控制 web 场景的质量。
- 低 - 通过减少数据加载提高性能、稳定性和速度。
- 中等 - 同等优化性能和质量。
- 高 - 改善可视化选项(例如水面反射)的质量。
- 启用客户端查询 - 打开这些开关按钮让应用程序中的微件使用客户端查询使用 Web 地图中的数据。 如果您将同一 Web 地图添加至多个地图微件,则只需为 Web 地图启用一次客户端查询。
注:
Web 场景不支持客户端查询。
客户端查询的优势为降低服务器需求并提高应用程序性能。 客户端查询大大减少向服务器发送的网络请求数。 此外,客户端查询速度快于服务器端查询。 选择要素以更新图表等数据相关任务执行速度更快。
客户端查询的缺点为更改地图范围时会延长地图要素的加载时间。
注:
服务器上可能要求很高的常用 Experience Builder 应用程序配置为列表微件,该微件会基于当前地图范围进行更新。
如果您使用范围更改触发器和过滤数据记录消息操作配置地图微件,为了避免服务器过载,建议启用客户端查询。 如果预期许多客户会同时访问应用程序,这一点尤其重要。
注:
有关客户端查询的已知限制,请参阅 ArcGIS Maps SDK for JavaScript 文档。
交互选项
“地图”微件支持在微件设置的操作选项卡中设置触发器。 通过向两张地图添加范围更改触发器、选择其他地图作为两张地图的目标和选择平移至和缩放至操作,您可以同步两个“地图”微件。 对于 web 地图,缩放至同步包括地图的旋转行为。 对于 web 场景,它包括旋转和倾斜行为。
注:
如果“地图”微件配置了缩放至和平移至操作,则缩放至操作优先于平移至。 这意味着如果用户同时平移和缩放地图,则平移至操作将被忽略。
可以设置触发器和消息操作以使地图与其他微件进行交互。 例如,您可以添加一个操作触发器,使“列表”微件仅显示地图上可见的要素。 “地图”微件还支持数据操作,这些操作将显示在弹出窗口中,允许用户导出数据、查看表中的记录等。 触发器、消息操作和数据操作将在微件设置的操作选项卡上进行定义和管理。 有关“地图”微件支持的操作的详细信息,请参阅向微件添加操作。
URL 参数
以下子部分将介绍地图相关的 URL 参数。 可使用管理 URL 状态下的设置在用户与地图微件交互时让这些参数在 URL 中显示。 所有地图微件参数均前置井号 (#)。 要包含多个参数,必须使用与号 (&) 分隔这些参数。
注:
地图微件的 center、scale 和 rotation 参数仅适用于 Web 地图,不适用于 Web 场景。
定义地图微件首次加载时的 web 地图或 web 场景
如果地图微件包含多个 Web 地图或 Web 场景,您可以使用 active_datasource_id 后跟所需项目的数据源 ID 来定义加载应用程序时哪一个处于活动状态。 以下为示例:
https://experience.arcgis.com/experience/<AppId>#<mapWidgetID>=active_datasource_id:<dataSourceId>
https://experience.arcgis.com/experience/<AppId>#map_1=active_datasource_id:dataSource_4
居中地图
要将地图置于特定位置的中心,请使用 center,后跟所需的坐标和所需坐标系的熟知 ID (WKID)。 以下为示例:https://experience.arcgis.com/experience/<AppId>#<mapWidgetID>=center:<x,y,wkid>
https://experience.arcgis.com/experience/<AppId>#map_1=center:-10373125.398783844%2C4598516.55871741%2C102100
定义地图比例
要定义地图比例,请使用 scale 后跟比例值。 以下为示例:
https://experience.arcgis.com/experience/<AppId>#<mapWidgetID>=scale:<scaleValue>
https://experience.arcgis.com/experience/<AppId>#map_1=scale:19257701.0800833
定义地图旋转
要定义地图旋转,请使用 rotation 后跟度数。 以下为示例:
https://experience.arcgis.com/experience/<AppId>#<mapWidgetID>=rotation:<rotationValue>
https://experience.arcgis.com/experience/<AppId>#map_1=rotation:45
定义地图视点
要定义视点(即查看地图或场景的位置或照相机位置),请使用 viewpoint。 如果地图微件包含多个地图或场景,则视点参数会影响所有这些地图或场景。
视点及其属性通常以 JSON 格式编写,如下例所示:
{
"rotation": 0,
"scale": 19966005.903731048,
"targetGeometry": {
"spatialReference": {
"latestWkid": 3857,
"wkid": 102100
},
"x": -9870655.016044471,
"y": 4724533.527708739
}
}
要使用 URL 定义特定视点,您必须将通常以 JSON 格式编写的所有这些属性编码到 URL 中。 以下为示例:
https://experience.arcgis.com/experience/<AppId>#map_1=viewpoint:%7B"rotation"%3A0%2C"scale"%3A24387741.012671936%2C"targetGeometry"%3A%7B"spatialReference"%3A%7B"latestWkid"%3A3857%2C"wkid"%3A102100%7D%2C"x"%3A-10078461.002935613%2C"y"%3A4523117.553838721%7D%7D
注:
center、scale 和 rotation 参数的优先级高于视点参数,如果您使用与 web 地图相关的多个参数,这些参数将优先使用。注:
由消息操作引起的地图范围更改的优先级高于由 URL 参数引起的范围更改。 例如,如果您尝试使用上述 URL 参数打开预定义范围内的地图微件,但地图微件也配置为记录选择更改触发器和平移至或缩放至消息操作的目标,则与消息操作相关的范围会取代您使用 URL 参数设置的范围。
定义地图图层的可见性
要定义地图图层的图层可见性,请使用layer_visibility。
图层可见性通常以 JSON 格式编写,如下例所示:
{
"widget_1-dataSource_1": {
"widget_1-dataSource_1-187938b7328-layer-2": false
},
"widget_1-dataSource_4": {
"widget_1-dataSource_4-18a690b433a-layer-4": false
}
}
要使用 URL 让地图中的图层可见或隐藏,则必须将所有信息编码到 URL 中的 layer_visibility 参数之后。 以下为示例:https://experience.arcgis.com/experience/<AppId>#map_1=layer_visibility:%7B%22widget_1-dataSource_1%22%3A%7B%22widget_1-dataSource_1-187938b7328-layer-2%22%3Afalse%7D%2C%22widget_1-dataSource_4%22%3A%7B%22widget_1-dataSource_4-18a690b433a-layer-4%22%3Afalse%7D%7D
缩放至所选要素
当您选择一个要素时,data_s 参数会出现在应用程序 URL 中。 目前,可使用 zoom_to_selection=true 按 ObjectID 缩放至地图上的单一选定要素。 以下为示例:https://experience.arcgis.com/experience/<AppId>/#data_s=id:<data source ID>:<OBJECTID>&zoom_to_selection=true
https://experience.arcgis.com/experience/<AppId>/#data_s=id%3AdataSource_1-csv_905%3A77&zoom_to_selection=true