antwebes/geocoder) provides geocoding capabilities (converting addresses to coordinates and vice versa) via multiple providers (Google Maps, OpenStreetMap, etc.). It fits well in architectures requiring:
cache() facade) for seamless integration. Supports facades for cleaner syntax (e.g., Geocoder::geocode()).guzzlehttp/guzzle for HTTP requests). No database or heavy infrastructure required.GoogleMaps, OpenStreetMap) and config keys (geocoder.providers)..env for API keys (e.g., GOOGLE_MAPS_API_KEY).Mockery or Laravel’s Http tests).GeocoderException). Custom logic needed for retries, fallback providers, or graceful degradation.config/geocoder.php for provider settings (e.g., API keys, defaults).cache()->remember()) to store geocoded results.ShouldQueue jobs for async processing.Geocoded, GeocodeFailed) for observability.locations table (e.g., latitude, longitude, provider, source_address).POST /api/geocode) or directly in services.composer require antwebes/geocoder.php artisan vendor:publish --provider="Antwebes\Geocoder\GeocoderServiceProvider"..env with provider API keys (e.g., GOOGLE_MAPS_API_KEY).config/app.php.use Antwebes\Geocoder\Facades\Geocoder;
$result = Geocoder::geocode('1600 Amphitheatre Parkway, Mountain View');
$result = cache()->remember("geocode:{$address}", now()->addHours(24), function() use ($address) {
return Geocoder::geocode($address);
});
GeocodeJob::dispatch($address)->onQueue('geocoding');
try {
return Geocoder::geocode($address, 'google');
} catch (Exception) {
return Geocoder::geocode($address, 'openstreetmap');
}
Antwebes\Geocoder\Contracts\Provider in PHPUnit tests.composer.json for supported Laravel versions (assume 8+ unless specified).guzzlehttp/guzzle and provider SDKs for updates.composer.json to avoid breaking changes.README or wiki.Log::debug($result->toArray())).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Provider API downtime | Geocoding fails for all requests | Fallback to secondary provider |
How can I help you explore Laravel packages today?