<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Using PMTiles as a basemap in the ArcGIS Maps SDK for JavaScript (no tile server) in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/using-pmtiles-as-a-basemap-in-the-arcgis-maps-sdk/m-p/1696620#M88361</link>
    <description>&lt;P class=""&gt;I attended a MapTime Seattle session on Thursday (April 9), where Stephanie May led a workshop on building standalone web maps with &lt;A title="MapLibre GL JS" href="https://maplibre.org/projects/gl-js/" target="_blank" rel="noopener"&gt;MapLibre&lt;/A&gt; and &lt;A title="PMTiles Concepts" href="https://docs.protomaps.com/pmtiles/" target="_blank" rel="noopener"&gt;PMTiles.&lt;/A&gt; Everything is served from GitHub Pages. No server, no backend, no tile cache to manage. Just a static file and a map. I was kind of blown away by how simple and powerful it was.&lt;/P&gt;&lt;P class=""&gt;I work in an Esri shop (King County GIS), so my first thought was "how do I bring this to our world?" PMTiles are amazing, but the ArcGIS Maps SDK doesn't natively support them. The workarounds I've seen involve standing up a tile server to translate PMTiles into z/x/y endpoints, which kind of defeats the whole point.&lt;/P&gt;&lt;P class=""&gt;So I started brainstorming and built a library called &lt;A title="FuseSimple Github Repo" href="https://github.com/MapSimple-Org/FuseSimple-Public" target="_self"&gt;FuseSimple&lt;/A&gt;. The idea is simple: MapLibre renders the PMTiles basemap on a hidden canvas underneath a transparent Esri MapView. Two engines, synced together, one map. Your Esri code doesn't change. Feature layers, widgets, popups, clustering, Arcade, StreamLayers, auth. It all just works on top of the PMTiles basemap.&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;javascript&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;const&lt;/SPAN&gt; fuse &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;await&lt;/SPAN&gt; &lt;SPAN class=""&gt;FuseSimple&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;create&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;basemap&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;engine&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"maplibre"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;source&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"/your-region.pmtiles"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;operational&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;engine&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"esri"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;view&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; view&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Alignment between Esri and MapLibre parcels" style="width: 999px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/151173i75AD54CDBCA80840/image-size/large?v=v2&amp;amp;px=999" role="button" title="fusesimple demo king county.png" alt="Alignment between Esri and MapLibre parcels" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Alignment between Esri and MapLibre parcels&lt;/span&gt;&lt;/span&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;I put together three demos to push on different parts of the SDK and make sure things actually hold up:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;King County Parcels&lt;/STRONG&gt; - Two parcel layers from two engines over the same geography to prove alignment. &lt;A href="https://fusesimple.mapsimple.org/demos/king-county.html" target="_blank" rel="noopener"&gt;https://fusesimple.mapsimple.org/demos/king-county.html&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;PNW Power Plant Clustering&lt;/STRONG&gt; - Esri's featureReduction with Arcade expressions and popups on a PMTiles basemap covering WA/OR/ID. &lt;A href="https://fusesimple.mapsimple.org/demos/clustering.html" target="_blank" rel="noopener"&gt;https://fusesimple.mapsimple.org/demos/clustering.html&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;LA Metro Buses&lt;/STRONG&gt; - Real-time StreamLayer over WebSocket with rotated markers and live stats. &lt;A href="https://fusesimple.mapsimple.org/demos/la-buses.html" target="_blank" rel="noopener"&gt;https://fusesimple.mapsimple.org/demos/la-buses.html&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;All single-file HTML. View Source on any of them.&lt;/P&gt;&lt;P class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PMTiles basemap with live LA bus feed" style="width: 999px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/151174iAD403D0FC0B34E77/image-size/large?v=v2&amp;amp;px=999" role="button" title="fusesimple demo la buses.png" alt="PMTiles basemap with live LA bus feed" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;PMTiles basemap with live LA bus feed&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;&lt;P class=""&gt;Built on the 5.0 SDK, supports both the web component pattern and classic MapView. Still pre-1.0 (v0.14.1), so there are rough edges. Would love feedback from anyone who gives it a try.&lt;/P&gt;&lt;P class=""&gt;Repo and docs: &lt;A href="https://github.com/MapSimple-Org/FuseSimple-Public" target="_blank" rel="noopener"&gt;https://github.com/MapSimple-Org/FuseSimple-Public&lt;/A&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 16 Apr 2026 04:10:58 GMT</pubDate>
    <dc:creator>adamsimple</dc:creator>
    <dc:date>2026-04-16T04:10:58Z</dc:date>
    <item>
      <title>Using PMTiles as a basemap in the ArcGIS Maps SDK for JavaScript (no tile server)</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/using-pmtiles-as-a-basemap-in-the-arcgis-maps-sdk/m-p/1696620#M88361</link>
      <description>&lt;P class=""&gt;I attended a MapTime Seattle session on Thursday (April 9), where Stephanie May led a workshop on building standalone web maps with &lt;A title="MapLibre GL JS" href="https://maplibre.org/projects/gl-js/" target="_blank" rel="noopener"&gt;MapLibre&lt;/A&gt; and &lt;A title="PMTiles Concepts" href="https://docs.protomaps.com/pmtiles/" target="_blank" rel="noopener"&gt;PMTiles.&lt;/A&gt; Everything is served from GitHub Pages. No server, no backend, no tile cache to manage. Just a static file and a map. I was kind of blown away by how simple and powerful it was.&lt;/P&gt;&lt;P class=""&gt;I work in an Esri shop (King County GIS), so my first thought was "how do I bring this to our world?" PMTiles are amazing, but the ArcGIS Maps SDK doesn't natively support them. The workarounds I've seen involve standing up a tile server to translate PMTiles into z/x/y endpoints, which kind of defeats the whole point.&lt;/P&gt;&lt;P class=""&gt;So I started brainstorming and built a library called &lt;A title="FuseSimple Github Repo" href="https://github.com/MapSimple-Org/FuseSimple-Public" target="_self"&gt;FuseSimple&lt;/A&gt;. The idea is simple: MapLibre renders the PMTiles basemap on a hidden canvas underneath a transparent Esri MapView. Two engines, synced together, one map. Your Esri code doesn't change. Feature layers, widgets, popups, clustering, Arcade, StreamLayers, auth. It all just works on top of the PMTiles basemap.&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;javascript&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;const&lt;/SPAN&gt; fuse &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;await&lt;/SPAN&gt; &lt;SPAN class=""&gt;FuseSimple&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;create&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;basemap&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;engine&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"maplibre"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;source&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"/your-region.pmtiles"&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;operational&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;engine&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"esri"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;view&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; view&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Alignment between Esri and MapLibre parcels" style="width: 999px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/151173i75AD54CDBCA80840/image-size/large?v=v2&amp;amp;px=999" role="button" title="fusesimple demo king county.png" alt="Alignment between Esri and MapLibre parcels" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Alignment between Esri and MapLibre parcels&lt;/span&gt;&lt;/span&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;I put together three demos to push on different parts of the SDK and make sure things actually hold up:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;King County Parcels&lt;/STRONG&gt; - Two parcel layers from two engines over the same geography to prove alignment. &lt;A href="https://fusesimple.mapsimple.org/demos/king-county.html" target="_blank" rel="noopener"&gt;https://fusesimple.mapsimple.org/demos/king-county.html&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;PNW Power Plant Clustering&lt;/STRONG&gt; - Esri's featureReduction with Arcade expressions and popups on a PMTiles basemap covering WA/OR/ID. &lt;A href="https://fusesimple.mapsimple.org/demos/clustering.html" target="_blank" rel="noopener"&gt;https://fusesimple.mapsimple.org/demos/clustering.html&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;LA Metro Buses&lt;/STRONG&gt; - Real-time StreamLayer over WebSocket with rotated markers and live stats. &lt;A href="https://fusesimple.mapsimple.org/demos/la-buses.html" target="_blank" rel="noopener"&gt;https://fusesimple.mapsimple.org/demos/la-buses.html&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;All single-file HTML. View Source on any of them.&lt;/P&gt;&lt;P class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PMTiles basemap with live LA bus feed" style="width: 999px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/151174iAD403D0FC0B34E77/image-size/large?v=v2&amp;amp;px=999" role="button" title="fusesimple demo la buses.png" alt="PMTiles basemap with live LA bus feed" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;PMTiles basemap with live LA bus feed&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;&lt;P class=""&gt;Built on the 5.0 SDK, supports both the web component pattern and classic MapView. Still pre-1.0 (v0.14.1), so there are rough edges. Would love feedback from anyone who gives it a try.&lt;/P&gt;&lt;P class=""&gt;Repo and docs: &lt;A href="https://github.com/MapSimple-Org/FuseSimple-Public" target="_blank" rel="noopener"&gt;https://github.com/MapSimple-Org/FuseSimple-Public&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Apr 2026 04:10:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/using-pmtiles-as-a-basemap-in-the-arcgis-maps-sdk/m-p/1696620#M88361</guid>
      <dc:creator>adamsimple</dc:creator>
      <dc:date>2026-04-16T04:10:58Z</dc:date>
    </item>
  </channel>
</rss>

