GitHub code size Pub License: MIT package publisher

flutter_nominatim

Completely Free & Open Source! Unlike other geocoding services, Nominatim is 100% free to use with NO API key required. You can start implementing location features in your app immediately without any payment or API key setup.

Example Screenshots πŸ“Έ

Place Search Convert LatLng to Address Convert Address to LatLng
Auto-complete search with realtime results Convert coordinates to human-readable address Convert address to geographical coordinates

Key Benefits

Feature Description Benefit
πŸ’° Free Forever No API key, no pricing tiers Save hundreds of dollars compared to paid geocoding services
πŸ”‘ No Authentication No API keys or tokens needed Quick implementation without setup hassle
🌍 Global Coverage Worldwide address database Works everywhere your app does
πŸš€ Easy Integration Simple API methods Get started in minutes
⚑ Performance Optimized Built-in rate limiting & caching Smooth user experience

Features Overview

1. Place Search πŸ”

  • Auto-complete with debouncing
  • Real-time results as you type
  • Most relevant matches
  • Rich place details
  • Polygon Boundaries for places

2. Geocoding Services

Service Description Example
Forward Geocoding Convert address to coordinates "London Bridge" β†’ (51.5074, -0.1278)
Reverse Geocoding Convert coordinates to address (51.5074, -0.1278) β†’ "London Bridge, London, UK"

3. Built-in Optimizations

  • Automatic request debouncing
  • Rate limit handling
  • Error management
  • Input validation

Quick Start

Installation

dependencies:
  flutter_nominatim: ^1.0.0

Basic Usage

// Initialize
final nominatim = Nominatim.instance;

// Search places
final results = await nominatim.search("London");

// Get address from coordinates
final address = await nominatim.getAddressFromLatLng(51.5074, -0.1278);

// Get coordinates from address
final coordinates = await nominatim.getLatLngFromAddress("London Bridge");

Implementation Examples

Auto-complete Search Widget

TextField(
  controller: searchController,
  decoration: const InputDecoration(
    hintText: 'Search places...',
    prefixIcon: Icon(Icons.search),
  ),
  onChanged: (query) {
    if (query.length >= 3) {
      nominatim.search(query).then((results) {
        // Handle results
      });
    }
  },
)

Usage Guidelines

Input Constraints

Parameter Range/Format Example
Latitude -90 to 90 51.5074
Longitude -180 to 180 -0.1278
Search Query Min 3 characters "London"

Rate Limiting

  • Maximum 1 request per second
  • Built-in request management
  • Automatic request queuing

Why It's Free & Open

Nominatim is powered by OpenStreetMap, the world's largest collaborative mapping project. This means:

  • πŸ†“ Completely Free: No hidden costs or subscription fees
  • πŸ”“ No API Key Required: Start developing immediately
  • 🌐 Community Driven: Regular updates from global contributors
  • πŸ“ˆ Constantly Improving: Database grows and improves daily

Attribution Requirements

When using this plugin, include:

Β© OpenStreetMap contributors

Support & Contribution

We welcome:

  • πŸ› Bug reports
  • πŸ’‘ Feature suggestions
  • 🀝 Pull requests
  • πŸ“– Documentation improvements

License

MIT License - feel free to use in your projects!

Visitors Count

Loading

Libraries

flutter_nominatim