flutter_nominatim 是一个 Flutter 插件,可使用 OpenStreetMap 的 Nominatim 服务实现免费的地理编码和地点搜索。它提供了内置的性能和可靠性优化,无需 API 密钥。该插件支持 Android、iOS、Web、macOS、Windows 和 Linux 等多个平台,非常适合需要地址查找和位置服务的跨平台应用。它通过直观的方法简化了地理数据的搜索和检索集成。
适合场景
应用中的地址搜索
地理编码用户输入
位置自动补全
基于位置的服务
地图标记放置
离线可用的位置查找
主要特点
无需 API 密钥
内置请求优化
跨平台支持
简单 API 接口
实时地点建议
基于OpenStreetMap
适合对象
寻求免费地理编码的开发者
需要地点搜索功能的应用
项目避免第三方API成本
跨平台位置功能
原型设计基于位置的应用程序
使用建议
Nominatim 的速率限制
依赖于 OpenStreetMap 数据质量
不适合高吞吐量生产环境使用
仅限公共 Nominatim 实例
需要互联网连接
高峰使用期间可能出现延迟
原始 README
以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。
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
// Initializefinal nominatim = Nominatim.instance;
// Search placesfinal results = await nominatim.search("London");
// Get address from coordinatesfinal address = await nominatim.getAddressFromLatLng(51.5074, -0.1278);
// Get coordinates from addressfinal coordinates = await nominatim.getLatLngFromAddress("London Bridge");