Compatibility with STAC API
Panoramax viewer works best with a Panoramax API, but is designed to be compatible with a wide range of STAC API. Although, third-party STAC API needs the following requirements to work with our viewer.
Search endpoint
Your STAC API should offer a /search endpoint (documentation).
Collections and items
Collections should correspond to pictures sequences, and items corresponding to individual pictures.
Individual pictures should follow STAC item specification, plus some extensions:
- Perspective imagery specification for its pictures and sequences metadata (documentation)
- Tiled assets specification for smooth display of high-resolution pictures (documentation)
List of support item metadata
assetsroles:data,visualandthumbnailtype:image/jpegorimage/webphref
assets_templatestilesrole:datahref
geometrycollectionidlinksrel:prev,next,related,viatype:application/geo+jsonorapplication/jsonidgeometrydatetime
propertiespers:interior_orientationfield_of_viewfocal_length
view:azimuthpers:rollpers:pitchdatetimeordatetimetztiles:tile_matrix_setsgeovisiotype:TileMatrixSetTypetileMatrixmatrixHeightmatrixWidthtileHeighttileWidth
Vector tiles
If you want to use map in viewer, your STAC API should offer vector tiles, through one of these ways:
- A MapLibre Style JSON file, advertised through landing page (
/api) with axyz-stylelink. - A direct tiles URL, pointing to tiles in MVT format and following layer structure described below. It must be advertised in landing page (
/api) using Web Map Links STAC extension (asxyzlink).
Layers
MVT Vector tiles must have the following layers:
| Name | Zooms | Mandatory | Properties |
|---|---|---|---|
sequences |
All | ✅ | - id: sequence ID |
pictures |
>= 15 | ✅ | - id: picture ID- ts: picture date/time- heading: picture heading in degrees |
grid |
< 6 | ❌ | Mandatory: - id: grid cell ID- nb_pictures: amount of pictures- coef: value from 0 to 1, relative quantity of available picturesOptional: - nb_360_pictures- coef_360_pictures- nb_flat_pictures- coef_flat_pictures(similar to nb_pictures and coef but separated by picture type) |
Translation
If your vector tiles support multiple languages, you can set in your style.json the list of supported languages :
The viewer will try to find the best matching name:LANG property according to user browser settings.