mirror of
https://github.com/protomaps/PMTiles.git
synced 2026-02-04 02:41:09 +00:00
* Some HTTP servers will return 206 Partial Content with an ETag for the contents, not the entire resource. * This change allows the client to continue with mismatched ETags if this case is detected.
the PMTiles package can be included via script tag or ES6 module.
Leaflet
Raster tileset
Example of a raster PMTiles archive displayed in Leaflet:
const p = new pmtiles.PMTiles('example.pmtiles')
pmtiles.leafletRasterLayer(p,{attribution:'© <a href="https://openstreetmap.org">OpenStreetMap</a>'}).addTo(map)
Vector tileset
See protomaps.js
MapLibre GL JS
Example of a PMTiles archive displayed in MapLibre GL JS:
let protocol = new pmtiles.Protocol();
maplibregl.addProtocol("pmtiles",protocol.tile);
var style = {
"version": 8,
"sources": {
"example_source": {
"type": "vector",
"url": "pmtiles://https://example.com/example.pmtiles",
"attribution": '© <a href="https://openstreetmap.org">OpenStreetMap</a>'
...
CORS
Reading a PMTiles archive from cloud storage requires CORS configuration if your web page is hosted on a different domain than your storage bucket.
Amazon S3 and S3-Compatible Storage
[
{
"AllowedHeaders": ["Range"],
"AllowedMethods": ["GET","HEAD"],
"AllowedOrigins": ["*","example.com"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3000
}
]
Google Cloud Storage
[
{
"origin": ["example.com","*"],
"method": ["GET","HEAD"],
"responseHeader": ["range","etag"],
"maxAgeSeconds": 3000
}
]
Setting CORS from the command line
AWS CLI is the recommended way to do this:
create a file cors_rules.json:
{
"CORSRules": [
{
"AllowedOrigins": ["example.com","*"],
"AllowedHeaders": ["range"],
"AllowedMethods": ["GET","HEAD"],
"MaxAgeSeconds": 3000,
"ExposeHeaders": ["ETag"]
}
]
}
Then configure your bucket with:
aws s3api put-bucket-cors --bucket MY_BUCKET --cors-configuration file:///home/user/cors_rules.json
Optional arguments:
-endpoint-url https://S3_COMPATIBLE_ENDPOINT: for non-S3 storages.--profile PROFILE: choose credentials named in~/.aws/credentials