You can load a "snapshot" of a feature layer by querying the feature service and fitting the results of the query within a pre-defined boundary.
<html>
<head>
<meta charset="utf-8" />
<title>Display a feature layer snapshot</title>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" crossorigin=""></script>
<!-- Load Esri Leaflet from CDN -->
<script src="https://unpkg.com/esri-leaflet@3.0.12/dist/esri-leaflet.js"></script>
<!-- Load Esri Leaflet Vector from CDN -->
<script src="https://unpkg.com/esri-leaflet-vector@4.2.5/dist/esri-leaflet-vector.js" crossorigin=""></script>
<style>
html,
body,
#map {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
color: #323232;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
const accessToken = "YOUR_ACCESS_TOKEN";
const map = L.map("map").setView([41.004, -77.618], 7);
L.esri.Vector.vectorBasemapLayer("arcgis/colored-pencil", {
token: accessToken
}).addTo(map);
const statesUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/2";
const citiesUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0";
// query a feature service for a state
L.esri
.query({
url: statesUrl
})
.where("state_name='Pennsylvania'")
.run(function (error, states) {
if (error) {
return;
}
// draw state on the map
const pennsylvania = L.geoJSON(states).addTo(map);
// fit map to boundary
map.fitBounds(pennsylvania.getBounds());
// query all cities with a population greater than 30,000 (pop2000 > 30000) inside our boundary
L.esri
.query({
url: citiesUrl
})
.where("pop2000 > 30000")
.within(pennsylvania)
.run(function (error, cities) {
if (error) {
return;
}
L.geoJSON(cities).addTo(map);
});
});
</script>
</body>
</html>