geocoder-php/tomtom-provider
TomTom provider for the Geocoder PHP library. Adds forward and reverse geocoding via TomTom APIs, returning standardized Geocoder results for addresses, coordinates, and place lookups. Useful for Laravel/PHP apps needing TomTom-backed location search.
tomtom-provider package integrates with TomTom’s geocoding API, making it ideal for applications requiring reverse geocoding, forward geocoding, or geospatial data enrichment (e.g., location-based services, logistics, or mapping features).geocoder-php library, it adheres to Laravel’s dependency injection and service container patterns, enabling seamless integration with Laravel’s Service Providers and Facades.Geocoder interface (e.g., geocode(), reverse()), reducing boilerplate for Laravel developers..env or config files), enabling dynamic switching between environments (dev/staging/prod).GeocodeFailed) for observability or retries.HTTP 429 for rate limits).geocoder-php/mapbox-provider) for cost optimization.Mockery or Vesper mocks.// Example: Register the provider in config/geocoder.php
'providers' => [
'tomtom' => [
'key' => env('TOMTOM_API_KEY'),
'host' => 'api.tomtom.com',
],
];
composer.json for constraints.composer require geocoder-php/tomtom-provider
use Geocoder\Geocoder;
use Geocoder\Provider\TomTom\TomTomProvider;
$geocoder = new Geocoder();
$geocoder->registerProvider(new TomTomProvider(env('TOMTOM_API_KEY')));
$result = $geocoder->geocode('1600 Amphitheatre Parkway, Mountain View');
public function register()
{
$this->app->singleton(Geocoder::class, function ($app) {
$geocoder = new Geocoder();
$geocoder->registerProvider(new TomTomProvider(env('TOMTOM_API_KEY')));
return $geocoder;
});
}
// app/Facades/GeocoderFacade.php
public static function geocode($query) {
return app(Geocoder::class)->geocode($query);
}
Log::debug).geocoder-php core.geocoder-php and its dependencies (e.g., guzzlehttp/guzzle) are compatible with Laravel’s stack.GIS extensions).geocoder-php updates. Test changes in a staging environment before upgrading.$geocoder->getProvider('tomtom')->setDebug(true);
401 Unauthorized, 429 Too Many Requests).$cache = Cache::remember("geocode_{$query}", now()->addHours(1), function () use ($geocoder, $query) {
return $geocoder->geocode($query);
});
Address::chunk(100, function ($addresses) {
foreach ($addresses as $address) {
GeocoderFacade::geocode($address->raw_address)->then(function ($result) {
$address->update(['lat' => $result->getLatitude()]);
});
}
});
| Failure Scenario | Mitigation Strategy | Impact |
|---|---|---|
| TomTom API downtime | Fallback to OpenStreetMap provider | User-facing delay (~500ms) |
| Rate limit exceeded (429) | Exponential backoff + queue retries | Temporary queue delays |
| Invalid API key |
How can I help you explore Laravel packages today?