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