Skip to content

Map

The Map view plots your geotagged photos on an interactive Leaflet map, so you can see where a set of photos was taken and jump straight to any of them.

  • The map is opened for a given album at /map/{albumId}, or without an album at /map, in which case it plots every photo you are allowed to see.
  • Only photos carrying GPS coordinates in their metadata are placed. Photos without coordinates are simply absent from the map; nothing is guessed from the album or the filename.
  • Nearby photos are grouped into clusters that split apart as you zoom in. Clicking a single marker opens that photo in the gallery.
  • When map_display_direction is on and the photo records a camera bearing, the marker is rotated to show which way the camera was pointing.
  • An album’s GPX tracks are drawn over the map as coloured lines, one colour per track, alongside the photo markers.
  • Sensitive photos are excluded when hide_nsfw_in_map is on. See Sensitive Albums.
  • From the left menu, when map_display is enabled.
  • From an album, which opens the map scoped to that album. Whether the photos of its sub-albums are included as well is decided by map_include_subalbums.
  • Press Esc to leave the map and go back where you came from.

Anonymous visitors only get the map when map_display_public is on, and they only ever see the photos they are allowed to see.

The raw coordinates stored with a photo can be turned into a readable place name by a reverse-geocoding service, enabled with location_decoding. What is then displayed in the photo details is controlled separately for coordinates and for the decoded name, and separately again for anonymous visitors, so you can show a city name publicly while keeping the exact coordinates private.

By default the lookups go to the public nominatim.openstreetmap.org server, whose usage policy caps them at one request per second. Lychee throttles itself accordingly; LOCATION_DECODING_REQUESTS_PER_SECOND raises that ceiling, and should only be raised if you are not hitting the public server.

Setting LOCAL_GEO_DECODING_URL in the .env file points Lychee at your own Nominatim-API-compatible endpoint instead of the public server. Requests to it are sent unthrottled, since the rate limit exists only for the shared instance. This is a bring-your-own-service integration: docker-compose.yaml ships a commented lychee_geo_decoding example service to start from, and the diagnostics page reports whether the endpoint answers.

The variable is ignored unless the v8 feature is enabled; without it, Lychee always uses the public Nominatim server.

SettingDescriptionDefault
map_displayMaster toggle for the map views.off
map_display_publicAllow anonymous visitors to access the map.off
map_include_subalbumsInclude the photos of sub-albums when opening an album’s map.off
map_display_directionRotate markers to show the camera bearing when it is available.on
map_providerTile provider: OpenStreetMap.org, OpenStreetMap.de, OpenStreetMap.fr, or RRZE. All serve OpenStreetMap data.OpenStreetMap.org
location_decodingResolve GPS coordinates into readable place names.off
location_decoding_timeoutTimeout in seconds for a reverse-geocoding query.30
location_showShow the decoded place name in the photo details.on
location_show_publicShow the decoded place name to anonymous visitors.off
gps_coordinate_displayShow the raw latitude and longitude in the photo details.on
gps_coordinate_display_publicShow the raw coordinates to anonymous visitors.off

hide_nsfw_in_map, under Sensitive Albums, additionally keeps sensitive photos off the map.

Photos must contain GPS data in their EXIF metadata. Most smartphones embed it automatically; cameras usually need a GPS module or a phone pairing. exiftool gives the most reliable extraction, including the camera direction.