BeachFinder

marola.beaches.BeachFinder
object BeachFinder

Finds named beaches near a point via OpenStreetMap's Overpass API (overpass-api.de) — free, no API key, no signup.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Value members

Concrete methods

def defaultSnapshotDir: Option[Path]

Where committed beach lists live. MAROLA_BEACHES_DIR overrides it; unset means site/beaches when that directory exists and nothing otherwise, so a plain just run from anywhere still works and CI — which has the directory checked in — never calls Overpass.

Where committed beach lists live. MAROLA_BEACHES_DIR overrides it; unset means site/beaches when that directory exists and nothing otherwise, so a plain just run from anywhere still works and CI — which has the directory checked in — never calls Overpass.

Attributes

def nearby(origin: Coordinates, radiusKm: Double = ..., limit: Int = ..., snapshots: Option[Path] = ...): List[Beach] < Sync

Concrete fields

val Endpoints: List[String]

Tried in order. All are public Overpass instances serving the same OSM data through the same API, so this is a mirror rotation, not a fallback to something lesser. Verified 2026-09-09: overpass-api.de answered in 16 s, overpass.private.coffee in 21 s, overpass.kumi.systems returned 504. A single hardcoded endpoint is why a slow day at overpass-api.de failed the whole site build with HttpConnectTimeoutException.

Tried in order. All are public Overpass instances serving the same OSM data through the same API, so this is a mirror rotation, not a fallback to something lesser. Verified 2026-09-09: overpass-api.de answered in 16 s, overpass.private.coffee in 21 s, overpass.kumi.systems returned 504. A single hardcoded endpoint is why a slow day at overpass-api.de failed the whole site build with HttpConnectTimeoutException.

Attributes