Data source
All occurrence records are fetched live from the GBIF Occurrence Search API using a WKT polygon derived from your drawn shape. Nothing is cached server-side — every fetch goes direct to GBIF. Records are fetched in pages of 300 and capped at 10,000 per fetch. If your result set hits the cap, narrow your polygon, taxon group, or date range to get a complete dataset.
Coordinate handling
Leaflet uses a continuous coordinate system that extends beyond ±180° when the map is panned. Before querying GBIF, polygon vertices are normalised to [−180, 180]. Returned records are then shifted to the nearest world-copy of the current viewport, which is why Pacific islands near the antimeridian (Samoa, Tonga, Fiji) plot correctly regardless of how you've panned the map.
Common names
Vernacular names are looked up from GBIF's species API after fetching. The selection algorithm prefers: (1) a name tagged for the record's country, (2) an English name, (3) any available name. German compound animal nouns (e.g. Bisamratte) are excluded from English picks because GBIF regional checklists occasionally tag them with lang:'eng'.
Occurrences heatmap
Records are grouped by exact coordinate. Each unique location is weighted using a log₂ scale — 1 record → 0.15, 10 records → 0.52, 100 records → 1.0 — so heavily-visited birding hotspots don't oversaturate the map relative to areas with sparser but genuine coverage.
Coordinate precision
Records with a reported coordinate uncertainty ≥ 1,500 m are shown at reduced opacity. Many museum specimens and older survey records carry uncertainties of several kilometres — they're included but visually distinguished so they don't mislead fine-scale analysis.
Taxon classification
Records are assigned to groups (Birds, Mammals, Reptiles, Fish, etc.) using the class and order fields returned by GBIF. Fish detection uses a two-stage approach: first a whitelist of ~65 fish orders (covering traditional groupings plus modern splits from Betancur-R 2017, including Gobiiformes, Carangiformes, Labriformes and others absent from older classifications), then a fallback check on the class field (Actinopterygii, Chondrichthyes, Myxini, etc.) for records where the order is blank or non-standard. Fish are queried via GBIF's Chordata taxon key and filtered client-side, so the "records loaded" count before filtering will typically exceed the final fish count. Records that can't be matched to any group fall into "Other".
Species photos
Photos are sourced from the iNaturalist Taxa API. Up to 8 CC-licensed images are fetched per species from iNaturalist's curated taxon_photos list. If none are available, the app falls back to GBIF occurrence media. All-rights-reserved images are excluded.