Guides
Technical comparisons, tutorials, and explainers for geospatial developers.
- Address validation API guide: standardisation, verification, and geocoding
How address validation works — the difference between standardisation, verification, and geocoding. When to validate at input vs in batch post-processing.
- Best geocoding API for startups in 2025: honest comparison
Comparing geocoding APIs for startups in 2025 — Google Maps, Mapbox, Geoapify, LocationIQ, and Mapsi. Free tiers pricing limits and data restrictions compared.
- GDPR and location data: a developer's compliance guide
How GDPR applies to location data in apps — legal basis for processing, data minimisation, storage limits, and choosing GDPR-compliant location APIs.
- Geocoding a large dataset in Python: async batch processing guide
How to geocode thousands of addresses in Python efficiently — async requests, rate limiting, error handling, and caching strategies for production pipelines.
- Geofencing explained: how it works and how to build it
How geofencing works technically — polygon storage, point-in-polygon checks, webhook delivery, and mobile SDK integration. With real API examples.
- H3 hexagonal indexing: spatial analysis with Uber's grid system
How to use Uber's H3 hexagonal grid system for geospatial analysis. Practical Python examples for aggregation, nearest-neighbour search, and heatmaps.
- How to reduce your Google Maps API bill (and alternatives)
Practical strategies for cutting Google Maps API costs in 2025 — caching batch geocoding and switching providers where it makes sense.
- Map tiles explained: raster vs vector, hosting options, and formats
How map tiles work — raster vs vector tiles, XYZ vs TMS, MBTiles vs PMTiles, and self-hosting vs CDN delivery. A practical guide for developers.
- MapLibre GL JS tutorial: rendering vector tiles without Mapbox
A practical tutorial for MapLibre GL JS — the open-source fork of Mapbox GL. Render vector tiles from PMTiles or a tile server with full customisation.
- MapLibre GL JS vs Leaflet vs OpenLayers: choosing a map library in 2025
Comparing open-source map libraries in 2025 — MapLibre GL JS, Leaflet, and OpenLayers. Vector tiles, performance, bundle size, and use case fit.
- OSM vs Google Maps geocoding accuracy: what developers need to know
An honest look at where OpenStreetMap geocoding matches Google and where it falls short — with practical implications for production apps.
- OSRM vs Valhalla vs GraphHopper: choosing a routing engine in 2025
Technical comparison of open-source routing engines — OSRM, Valhalla, and GraphHopper. Architecture, performance, features, and deployment complexity.
- Pelias vs Nominatim vs Photon: which geocoder should you self-host?
A technical comparison of the three main open-source geocoders. Architecture accuracy deployment complexity and when to choose each.
- PMTiles vs MBTiles: choosing the right map tile format for 2025
PMTiles and MBTiles compared for hosting performance cost and tooling. Why PMTiles is winning for cloud-native map tile delivery.
- PostGIS spatial queries: a practical guide for developers
Learn to write PostGIS spatial queries — ST_Distance, ST_Within, ST_Intersects, and spatial indexing. Practical examples for real-world geospatial apps.
- Using OpenStreetMap in production apps: what developers need to know
OpenStreetMap for production use — coverage quality, update frequency, attribution requirements, and when to use OSM vs commercial map data.
- Valhalla routing engine: a practical guide for developers
How to use the Valhalla routing engine — directions matrix isochrone and optimised routing. With real API examples using a hosted Valhalla endpoint.
- What is reverse geocoding? A developer's guide
Reverse geocoding explained — converting GPS coordinates to addresses. How it works which APIs to use and what affects accuracy.