我已将 ArcGIS Esri map 集成到 Angular 应用程序中,并将一些位置输入到要素图层中,这些位置现在作为 Pinpoints 显示在 map 上。
但现在我想要的是,当用户进入 map 页面时我想在 map 上显示该位置的放大 View 。
我怎样才能实现这个目标?
.ts 文件
const map = new Map({
basemap: 'topo-vector',
layers: esriLayers
});
const view = new MapView({
container,
map: map,
zoom: 4,
center: [-97.63, 38.34],
});
const myLocationLayer = new FeatureLayer({
source: locationData.map((d,i)=>(
{
geometry: new Point({
longitude: d.longitude,
latitude: d.latitude
}),
attributes: {
ObjectID: i,
...d
}
}
)),
objectIdField: 'ObjectID',
geometryType: "point",
renderer: renderer,
});
map.add(dataFeedLayer);
this.view = view;
.html 文件
<!-- Map Div -->
<div #mapViewNode></div>
最佳答案
正如 @cabesuon 所解释的,一旦有了包含位置的要素图层,就可以使用 MapView.goTo() 方法。它接受多个输入选项。请参阅https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#goTo .
至于获取要素的范围,如果它们已经在图层中,则无需自己计算。
view.goTo(dataFeedLayer.source);
//没有额外的缩放填充
如果您在创建FeatureLayer时设置了源,则可以使用:
view.whenLayerView(dataFeedLayer).then(() => {
view.goTo({ target: dataFeedLayer.fullExtent.expand(1.2) })
});
如果要在要素图层更改后重置:
dataFeedLayer.queryExtent().then((results) => {
view.goTo({ target: results.extent.expand(1.2) })
});
关于javascript - 如何在 ArcGIS Esri Map 中自动显示位置的放大 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70678515/