我有一个用给定范围初始化的 ESRI 地图。当我用它的初始范围绘制地图时,实际显示的范围被截断了大约 5-10%,所以我的 FeatureLayers 上的一些特征位于初始视图之外。似乎地图正在尝试形成“最佳拟合”缩放级别,以将请求的范围与地图大小相匹配,但在这种情况下,最佳拟合会裁剪掉视图的顶部和底部。
我创建了一个演示来展示这种行为:
const map = new EsriMap({
basemap: 'topo',
});
const extent = {
spatialReference: {
latestWkid: 3857,
wkid: 102100,
},
xmin: -8418477.75984,
ymin: 5691645.413467902,
xmax: -8413622.645963104,
ymax: 5694628.596517603,
};
const mapView = new EsriMapView({
container: document.querySelector('#viewDiv'),
extent,
map,
});
const geometry = new EsriPolygon({
rings: [
[extent.xmax, extent.ymax],
[extent.xmax, extent.ymin],
[extent.xmin, extent.ymin],
[extent.xmin, extent.ymax],
[extent.xmax, extent.ymax],
],
spatialReference: extent.spatialReference,
});
const symbol = {
type: 'simple-line',
color: [255, 0, 0],
width: 2,
};
const graphic = new EsriGraphic({
geometry,
symbol,
});
mapView.graphics.add(graphic);
在https://codepen.io/asgallant/pen/rrWmLW现场观看。红色框是请求的范围。如果您更改地图容器的高度,地图会在某些断点处更改其初始缩放级别。
我想将地图配置为始终选择完全封装请求范围的默认缩放级别,因此不会切断任何功能。我知道我可以将缩放级别设置为任何我想要的,但我有数百张不同的地图,需要不同的缩放级别来实现既定目标。有谁知道如何做到这一点?