Select to view content in your preferred language

Introduce a PMTileLayer

2099
5
06-12-2025 02:47 PM
Status: Open
Labels (3)
stevegourley
Frequent Contributor

PMTiles are an exciting cloud native geospatial data type that can store vector and raster tiles in a single file archive hosted in blob storage. They can be fetched with range headers, cached with etags, and displayed on a map for cartographic purposes. It would be very interesting for esri to release a PMTile layer for the arcgis sdk for javascript similar to the GeoJSONLayer.

https://github.com/protomaps/PMTiles

https://docs.protomaps.com/

Tags (2)
5 Comments
danielsmtih

2nd this. I am working on a hack to use an intermediate tile server to serve pmTiles as z/x/y.pbf endpoints.

ClintonLunnUGS

@stevegourley just like @danielsmtih said, if you deploy it as a tile server you can use this today assuming you won't want direct access to the pmtiles file. There are some ways in the pmtiles docs about accessing the .pmtiles file directly using different mapping libraries, but unfortunately, there does not seem to be an equivalent in the ArcGIS maps sdk.


See the protomaps docs for deploying as a cdn. In their documentation they describe one of the advantages of deploying as a CDN is the Z/X/Y backwards compatibility it has to look like a normal tile server. I have gotten it to work with the VectorTIleLayer.

SteveBrumby

This!!! Esri - please add this for AGOL and ArcGIS Pro. 

adamsimple

I have an idea on how to do this without tile server. I will circle back if I have a breakthrough. 

adamsimple

@stevegourley @SteveBrumby @ClintonLunnUGS @danielsmtih 

Circling back. I got it working.

The approach: MapLibre renders the PMTiles basemap on a hidden canvas underneath a transparent Esri MapView. Two engines, synced together, one map. No tile server, no z/x/y translation, no CDN workaround. The PMTiles file just sits on static storage and MapLibre reads it directly.

Your Esri code doesn't change. Feature layers, widgets, popups, clustering, Arcade, StreamLayers, auth. All of it works on top of the PMTiles basemap.

Three demos if you want to see it:

Repo and docs: https://github.com/MapSimple-Org/FuseSimple-Public

Built on the 5.0 SDK. Still pre-1.0 so I'd love feedback from anyone who tries it. And yes, would still love to see Esri add native support for this.