Townships Tiles
Vector tiles for PLSS (Public Land Survey System) township boundaries and labels. Townships are the primary subdivision of the PLSS grid, typically 6 miles square.
Endpoint
https://api.landmapmagic.com/v1/tiles/townships/{z}/{x}/{y}.mvtReturns a Mapbox Vector Tile containing township polygon geometries and label points. Zoom range: 0 – 14.
URL Parameters
Parameters
| Name | Type | Description |
|---|---|---|
| z* | number | Zoom level (0-14). |
| x* | number | Tile X coordinate. |
| y* | number | Tile Y coordinate. |
| key* | string | Your API key. |
Source Layers
Source Layers
townshipsTownship polygon boundaries.z0-14townships_labelsTownship label points (centroids).z0-14Attributes
Available Attributes
| Attribute | Type | Description |
|---|---|---|
| township_id | string | Unique township identifier. |
| township_name | string | PLSS township designation (e.g. "T83N R24W"). |
| display_name | string | Human-readable display name for the township. |
| friendly_name | string | Enriched name from Minor Civil Division (MCD) data when available. |
| state_name | string | Full name of the state containing this township. |
| type | string | Feature type classification (e.g. "township"). |
| feature_id | string | BLM (Bureau of Land Management) feature identifier. |
Code Examples
curl "https://api.landmapmagic.com/v1/tiles/townships/10/210/380.mvt?key=YOUR_API_KEY" \
--output tile.mvtconst response = await fetch(
"https://api.landmapmagic.com/v1/tiles/townships/10/210/380.mvt?key=YOUR_API_KEY"
);
const data = await response.arrayBuffer();
console.log("Tile size:", data.byteLength, "bytes");import requests
response = requests.get(
"https://api.landmapmagic.com/v1/tiles/townships/10/210/380.mvt",
params={"key": "YOUR_API_KEY"}
)
print(f"Status: {response.status_code}, Size: {len(response.content)} bytes")Response
Response Headers
HTTP/1.1 200 OK
Content-Type: application/vnd.mapbox-vector-tile
Content-Encoding: gzip
Cache-Control: public, max-age=86400The response body is a binary MVT protobuf. Empty tiles return HTTP 204 with no body.
Styles
Fetch a renderer-ready style for the Townships layer from the unified /v1/styles endpoint. The response includes sources, layers, attribution, zoom ranges, and label deduplication baked in. Use the landmapmagic npm package for one-line install per target, or call the API directly.
MapLibre / Mapbox
Identical payload either way — Mapbox GL JS consumes a MapLibre Style Spec v8 doc as-is. Pick the keyword that reads best in your codebase.
GET https://api.landmapmagic.com/v1/styles?target=maplibre&layers=townships&key=YOUR_API_KEYGET https://api.landmapmagic.com/v1/styles?target=mapbox&layers=townships&key=YOUR_API_KEYconst style = await fetch(
'https://api.landmapmagic.com/v1/styles?' +
new URLSearchParams({
key: 'YOUR_API_KEY',
target: 'maplibre', // or 'mapbox' — same response
layers: 'townships',
})
).then((r) => r.json());
map.setStyle(style);Leaflet
GET https://api.landmapmagic.com/v1/styles?target=leaflet&layers=townships&key=YOUR_API_KEYimport { mountLeafletLandMap } from 'landmapmagic/leaflet';
await mountLeafletLandMap({
apiKey: 'YOUR_API_KEY',
map,
layers: ['townships'],
});Google + deck.gl
GET https://api.landmapmagic.com/v1/styles?target=google&layers=townships&key=YOUR_API_KEYimport { mountGoogleLandMap } from 'landmapmagic/google';
await mountGoogleLandMap({
apiKey: 'YOUR_API_KEY',
map,
overlay,
layers: ['townships'],
});friendly_nameattribute provides the local MCD name (e.g. "Lincoln Township") in addition to the standard PLSS designation. PLSS data is sourced from the BLM National PLSS dataset and covers the 30 western and midwestern PLSS states.