如何使用 ArcGIS Javascript API 显示 web 地图的全部范围?

Posted

技术标签:

【中文标题】如何使用 ArcGIS Javascript API 显示 web 地图的全部范围?【英文标题】:How to display full extent of a webmap using ArcGIS Javascript API? 【发布时间】:2021-12-25 00:09:57 【问题描述】:

我正在使用 ArcGIS javascript API 4.20 从 ArcGIS Online 中检索网络地图,并且我可以使用以下简单脚本通过提供其 ID 来加载和显示它:

import MapView from "https://js.arcgis.com/4.20/@arcgis/core/views/MapView.js";
import WebMap from "https://js.arcgis.com/4.20/@arcgis/core/WebMap.js";
import esriId from "https://js.arcgis.com/4.20/@arcgis/core/identity/IdentityManager.js";

var webmap = new WebMap(
    portalItem: 
    id: "1234567890qwertyuiop"
    
);

var view = new MapView(
    map: webmap,
    container: "mapFrame", //ID of the html element where the map will be displayed
);

我需要找到一种方法,以便在地图加载时以编程方式调整地图的缩放比例,以便其中包含的每个图层/要素在地图中显示的区域中都可见。

我找到了使用“fullExtent”函数的示例和参考资料,但据我了解,这旨在与图层一起使用。我无法弄清楚如何将相同的想法应用于完整的网络地图并使其发挥作用: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#fullExtent

webmap.when(function()
    view.extent = webmap.fullExtent;
);

//I've tried using this. It doesn't raise any errors, but does nothing.

你能告诉我我做错了什么吗?或者分享任何想法以使用不同的方法以编程方式实现我的需求?

【问题讨论】:

【参考方案1】:

WebMap 没有fullExtent 属性,所以这不起作用。

我猜您正在尝试一种方法来动态设置与某些图层功能相关的初始范围。 如果是这种情况,您应该使用所涉及层的fullExtent 属性来计算它。 拉起来应该不会太难,您可以手动迭代所有层的范围并获得最小和最大 x 和 y,或者使用 union 的方法 Extent (1)。

另一种思考问题的方法是使用固定的感兴趣区域,手动计算范围并将其设置为视图。或者选择一个中心并使用缩放级别。

1 - ArcGIS API - Extent union

【讨论】:

按照您的建议,我能够遍历图层并使用union 构建主要范围。但是在尝试将这个新范围设置为我的视图时,我遇到了一个问题。我收到以下错误:[esri.views.MapView] #center incompatible spatialReference "wkid":102644 with view's spatialReference "latestWkid":3857,"wkid":102100 我一直在尝试手动包含 spatialReference 值,但没有成功。你知道我是遗漏了什么,还是做错了什么? 所以基本上错误意味着您正在尝试使用具有不同空间参考的几何图形,该几何参考由基础层设置的地图之一。您需要将几何投影到地图的空间参考。您可以为 ArcGIS API - GeometryService 使用几何服务

以上是关于如何使用 ArcGIS Javascript API 显示 web 地图的全部范围?的主要内容,如果未能解决你的问题,请参考以下文章

arcgis for javascript 中 如何限制地图无限缩小 ,我写map.setMinResolution() 报错

如何利用arcgis api for javascript在graphicslayer绘制点线面

ArcGIS API for JavaScript 4.3 与ArcGIS Server联动使用地图服务

如何正确响应ArcGIS JavaScript API中图形的鼠标事件

如何正确响应ArcGIS JavaScript API中图形的鼠标事件

ArcGIS API for JavaScript 4.2学习笔记[23] 没有地图如何进行查询?FindTask类的使用