Skip to content

[geocoding]

Address lookups, nearest-intersection lookups, static map tiles, and time-of-day style overrides.

Fields

Address lookups

Field Type Default Description
provider string "none" Address lookup provider: none, nominatim (recommended), photon, or google.
provider_url string "" Base URL of your Nominatim or Photon instance.
geocoding_key array(string) [] Google Geocoding API keys. Poracle rotates through them.
forward_only bool false Disable reverse geocoding (coordinates to address). Forward lookups (place name to coordinates, e.g. !location) still work.
cache_detail int 3 Decimal places of lat/lon used as the cache key. 4 gives a 100x finer cache.
intersection_users array(string) [] GeoNames usernames used to fill the {{intersection}} DTS field with the nearest street intersection. One is picked at random for each uncached lookup to spread credit use. Empty = off. Requires a restart.

Address results are cached on disk in config/.cache/geocache. Intersection results share the same cache, but each uncached lookup uses a GeoNames credit.

Static maps

Field Type Default Description
static_provider string "none" Map tile provider: none, tileservercache (SwiftTileserverCache), rampardos, google, osm, or mapbox. rampardos uses the same protocol as tileservercache. osm renders through the MapQuest static map API and needs a MapQuest key in static_key.
static_provider_url string "" URL of the tile provider. This is the URL that ends up in alerts, so Discord/Telegram must be able to reach it.
static_internal_url string "" Optional private URL PoracleNG uses for its own tileserver calls (render, pregenerate, image upload pre-fetch). Use when static_provider_url is a public HTTPS address (e.g. behind Cloudflare) but the tileserver is directly reachable on your internal network. Empty = use static_provider_url.
static_key array(string) [] Static map API keys for google, osm (MapQuest) or mapbox. Poracle rotates.
width int 320 Default map width in pixels (non-tileserver providers).
height int 200 Default map height in pixels (non-tileserver providers).
zoom int 15 Default zoom level (non-tileserver providers).
type string "klokantech-basic" Map type passed to the Google static map API (google provider only).
day_style string "" Tile style used during the day.
dawn_style string "" Tile style used at dawn.
dusk_style string "" Tile style used at dusk.
night_style string "" Tile style used at night.

Use style: "#(style)" inside tileserver templates to switch styles by time of day.

Unused keys

sprite_height, sprite_width and scale are not read by PoracleNG and can be removed. The 5.3 config.example.toml no longer includes them.

Circuit breakers

The geocoder, the GeoNames intersection lookup, the tileserver and the Shlink shortener each have a circuit breaker. After several failures in a row the service is skipped for a cooldown period, so alerts are sent without it instead of waiting for timeouts. Geocoder and intersection limits come from [tuning] geocoding_*, and tileserver limits from [tuning] tileserver_*. Shlink always uses the defaults (5 failures, 30 s). See [tuning].

[geocoding.tileserver_settings.<type>]

Tileserver request settings. default applies to every map type without its own entry.

Field Type Default Description
type string "staticMap" staticMap or multiStaticMap.
width int 500 Tile width.
height int 250 Tile height.
zoom int 15 Zoom level.
pregenerate bool true Pregenerate the tile on the tileserver before sending its URL.
include_stops bool false Overlay nearby pokestops and gyms on the tile (needs multiStaticMap and a scanner database).
ttl int 0 Tile cache TTL in seconds. 0 = use [tuning] tileserver_pregen_ttl.

On per-type entries, leave a field out to inherit it from default.

Map types include: monster, raid, egg, quest, lure, invasion, gym, nest, maxbattle, showcase, fort-update, weatherchange, location, distance, area, areaoverview, weather, questsummary.

[geocoding.tileserver_settings.default]
type = "staticMap"
width = 500
height = 250
zoom = 15
pregenerate = true
include_stops = false

[geocoding.tileserver_settings.monster]
type = "multiStaticMap"
include_stops = true

[geocoding.static_map_type]

Chooses the tileserver template variant per map type. Every map type defaults to staticMap (one tile from /staticmap/poracle-<type>). Set multiStaticMap only if your tileserver has a matching poracle-multi-<type>.json template. Prefix the value with * (e.g. "*staticMap") to turn off pregeneration for that type.

Keys are map type names as above, except that pokemon alerts use the key pokemon (not monster).

[geocoding.static_map_type]
questsummary = "staticMap"

See also: Geocoding configuration, Static maps.