It can be convenient and useful for users to zoom to the extent of all features in a FeatureLayer once an app loads, when a layer is added to the map, or when a layer's definitionExpression is updated.
The FeatureLayer API provides a method called queryExtent(), which allows you to calculate the full extent of features at runtime that satisfy a given query. If no query parameters are set, then the method queries for the extent of all features in the layer according to its definition
.
// When the layer is loaded, query for the extent
// of all features in the layer. Then set the view's
// extent to the returned extent of all features.
layer
.when(() => {
return layer.queryExtent();
})
.then((response) => {
view.goTo(response.extent);
});
The FeatureLayer has a fullExtent property that contains an extent object saved to the feature service. Since some FeatureLayers are created from client-side features, other services, or feature services that don't contain an accurate full
of the data, using the full
to zoom to all features in the layer can be unreliable in some cases. The query
method is more reliable when working with layers that either don't have a full
, or the full
doesn't accurately reflect the extent of the data.
// using the fullExtent can be unreliable and inconsistent across layers
// depending on the service and how the data was created
layer.when(() => {
view.goTo(layer.fullExtent);
});