Download the PHP package andydefer/laravel-locationiq without Composer

On this page you can find all versions of the php package andydefer/laravel-locationiq. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-locationiq

Laravel LocationIQ

Intégration Laravel du SDK LocationIQ/Nominatim pour le géocodage, les itinéraires, les fuseaux horaires et les matrices de durées/distances.


Table des matières

  1. Introduction
  2. Installation
  3. Configuration
  4. Routes exposées
  5. Utilisation
  6. Contrats et extension
  7. Gestion des erreurs
  8. Tests
  9. Sécurité
  10. Compatibilité

1. Introduction

Objectif

andydefer/laravel-locationiq expose les opérations LocationIQ et Nominatim (solde de quota, fuseau horaire, itinéraires, matrices de durées/distances, reverse geocoding) sous forme d'endpoints HTTP Laravel prêts à l'emploi.

Le package s'appuie sur andydefer/php-locationiq, qui contient toute la logique métier et les objets typés (Record, Response, Data, Graph, Collection). Laravel LocationIQ n'ajoute que la couche transport : routes, validation, injection.

Ce que le package fournit

Ce que le package ne fait pas


2. Installation

Le LocationIqServiceProvider est découvert automatiquement par Laravel.


3. Configuration

3.1 Publier les fichiers

3.2 Charger les routes

Les routes ne sont pas chargées automatiquement. Charge-les explicitement depuis ton application :

Tu contrôles ainsi le préfixe, les middlewares et l'ordre de chargement.

3.3 Fichier de configuration

3.4 Clés de configuration

Clé Type Défaut Description
api_key string '' Clé API LocationIQ
base_url string https://us1.locationiq.com URL régionale LocationIQ (us1, eu1)
locationiq_client_fqcn class-string LocationIqClient::class Implémentation de LocationIqClientInterface
nominatim.base_url string https://nominatim.openstreetmap.org URL Nominatim
nominatim.user_agent string andydefer/laravel-locationiq User-Agent obligatoire pour Nominatim
nominatim.accept_language string fr Langue préférée des résultats Nominatim
nominatim_client_fqcn class-string NominatimClient::class Implémentation de NominatimClientInterface
directions.profile string driving Profil par défaut pour Directions (driving, walking)
directions.accept_language string\|null null Langue préférée des réponses LocationIQ
matrix.profile string driving Profil par défaut pour Matrix (driving, walking)

3.5 Variables d'environnement

3.6 Cas concret : configuration Afya (RDC)


4. Routes exposées

Le fichier routes/locationiq.php déclare cinq endpoints, tous en POST, sous le préfixe locationiq.

Méthode URI Nom Description
POST /locationiq/balance locationiq.balance Récupérer le solde de requêtes du jour
POST /locationiq/timezone locationiq.timezone Résoudre le fuseau horaire d'un point GPS
POST /locationiq/directions locationiq.directions Calculer un itinéraire
POST /locationiq/matrix locationiq.matrix Calculer une matrice de durées/distances
POST /locationiq/reverse locationiq.reverse Reverse geocoding via Nominatim

5. Utilisation

5.1 Récupérer le solde de quota

Requête :

Aucun paramètre.

Réponse succès (200) :

5.2 Résoudre un fuseau horaire

Requête :

Paramètres :

Champ Type Requis Contrainte
lat numeric ✅ Entre -90 et 90
lon numeric ✅ Entre -180 et 180
timestamp integer ❌ Unix timestamp, ≥ 0

Réponse succès (200) :

5.3 Calculer un itinéraire

Requête :

Paramètres :

Champ Type Requis Contrainte
coordinates array ✅ 2 à 25 paires [lon, lat]
coordinates.* array ✅ Exactement 2 valeurs
coordinates.*.0 numeric ✅ Entre -180 et 180 (longitude)
coordinates.*.1 numeric ✅ Entre -90 et 90 (latitude)
profile DirectionsProfile ❌ driving, walking
overview OverviewType ❌ simplified, full, false
steps boolean ❌ Inclure les étapes détaillées
alternatives boolean ❌ Retourner des itinéraires alternatifs
geometries GeometriesType ❌ polyline, polyline6, geojson

Réponse succès (200) :

Polymorphisme géré : LocationIQ retourne tantôt un objet unique, tantôt un tableau. Le SDK normalise toujours en collection typée.

5.4 Calculer une matrice de durées/distances

Calcule les durées et/ou distances des trajets les plus rapides entre toutes les paires de coordonnées fournies. Utile pour comparer rapidement plusieurs points (livraisons, tournées, répartition géographique).

Requête minimale :

Requête complète :

Paramètres :

Champ Type Requis Contrainte
coordinates array ✅ 2 à 25 paires [lon, lat]
coordinates.* array ✅ Exactement 2 valeurs
coordinates.*.0 numeric ✅ Entre -180 et 180 (longitude)
coordinates.*.1 numeric ✅ Entre -90 et 90 (latitude)
profile DirectionsProfile ❌ driving, walking
annotations array<MatrixAnnotation> ❌ duration, distance (au moins un si fourni)
sources array<int> ❌ Index de coordonnées, entre 0 et N-1
destinations array<int> ❌ Index de coordonnées, entre 0 et N-1
fallback_speed numeric ❌ Strictement supérieur à 0
fallback_coordinate FallbackCoordinate ❌ input, snapped

Réponse succès (200) :

Comprendre la matrice

Restreindre les sources et destinations

Par défaut, LocationIQ calcule la matrice complète N×N. Tu peux restreindre avec des index de coordonnées (base 0) :

Utile quand tu as un entrepôt fixe et plusieurs destinations. Économie de quota et de temps de calcul.

Fallback : paires non routables

Si tu veux garantir qu'aucune cellule ne soit vide, active le fallback :

5.5 Reverse geocoding

Requête :

Paramètres :

Champ Type Requis Contrainte
lat numeric ✅ Entre -90 et 90
lon numeric ✅ Entre -180 et 180
format NominatimFormat ❌ json, jsonv2, geojson, geocodejson
accept_language string ❌ Code ISO 639-1, max 10 caractères
zoom integer ❌ Entre 0 et 18
address_details boolean ❌ Inclure le bloc address

Réponse succès (200) :


6. Contrats et extension

6.1 LocationIqConfigInterface

Contrat de la configuration. Utilisé par le ServiceProvider pour construire les clients et par les Action pour les résoudre.

6.2 ErrorDescribable

Contrat hérité du package andydefer/laravel-nemesis. Tout enum d'erreur qui l'implémente expose une API cohérente :

6.3 ErrorCode

Enum qui implémente ErrorDescribable. Couvre les codes d'erreur LocationIQ et Nominatim.

6.4 Remplacer le client LocationIQ

Contraintes :

6.5 Remplacer le client Nominatim

Contraintes :

6.6 Binder les interfaces manuellement

L'option bind n'a d'effet que si les clés locationiq_client_fqcn et nominatim_client_fqcn restent égales à leurs valeurs par défaut.


7. Gestion des erreurs

Le package distingue trois niveaux.

7.1 Validation (HTTP 422)

Les FormRequest rejettent les payloads invalides avant toute exécution.

Situation Message type
lat manquant The lat field is required.
lat hors bornes The lat field must be between -90 and 90.
lon hors bornes The lon field must be between -180 and 180.
timestamp négatif The timestamp field must be at least 0.
coordinates moins de 2 paires The coordinates field must have at least 2 items.
coordinates plus de 25 paires The coordinates field must not have more than 25 items.
coordinates.* non conforme The coordinates.0 field must contain 2 items.
profile invalide The selected profile is invalid.
overview invalide The selected overview is invalid.
geometries invalide The selected geometries is invalid.
annotations vide The annotations field must have at least 1 item.
annotations.* invalide The selected annotations.0 is invalid.
sources.* hors plage The sources.0 field must be between 0 and {max}.
destinations.* hors plage The destinations.0 field must be between 0 and {max}.
fallback_speed nul ou négatif The fallback speed field must be greater than 0.
fallback_coordinate invalide The selected fallback coordinate is invalid.
format invalide The selected format is invalid.
zoom hors bornes The zoom field must be between 0 and 18.
accept_language trop long The accept language field must not be greater than 10 characters.

7.2 Erreurs LocationIQ

L'action map le message brut vers un ErrorCode, puis renvoie un ErrorResponseData avec le bon code HTTP.

Correspondances message → code :

Message brut LocationIQ ErrorCode HTTP
Invalid Request INVALID_REQUEST 422
Invalid Key INVALID_KEY 401
Access restricted ACCESS_RESTRICTED 403
Unable to geocode UNABLE_TO_GEOCODE 404
Rate Limited Day RATE_LIMITED_DAY 429
InvalidOptions INVALID_OPTIONS 422
NoTable NO_TABLE 422
NotImplemented NOT_IMPLEMENTED 422
Unknown error - Please try again after some time UNKNOWN_ERROR 500

LocationIQ peut renvoyer InvalidOptions, NoTable ou NotImplemented dans le champ code avec un HTTP 200. Le SDK détecte ce cas et les mappe vers les codes d'erreur typés.

7.3 Erreurs SDK

Les Action capturent les exceptions levées par le SDK et les transforment en ErrorResponseData.

Exception SDK ErrorCode HTTP
InvalidArgumentException (coordonnées Directions ou Matrix hors bornes, index sources/destinations invalides, fallback speed invalide) INVALID_COORDINATES 422
RuntimeException (erreur réseau Guzzle) Non capturée → 500 Laravel 500

Note : les index sources et destinations hors plage sont rejetés au niveau de la validation (FormRequest::withValidator) avant d'atteindre le SDK. Ils produisent une erreur 422 sur sources.0 / destinations.0, pas sur errorCode.


8. Tests

Le package fournit un IntegrationTestCase basé sur orchestra/testbench. Chaque test enregistre le vrai endpoint via action_route(...) et remplace les clients HTTP bas niveau par des mocks (MockLocationIqClient, MockNominatimClient).

Structure d'un test

Les tests suivent la convention AAA :

Restreindre les valeurs en test

Si tu veux tester avec une configuration alternative :


9. Sécurité


10. Compatibilité

Version Support
PHP 8.2+ ✅ Complet
Laravel 10 ✅ Complet
Laravel 11 ✅ Complet
Laravel 12 ✅ Complet

Licence


All versions of laravel-locationiq with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
andydefer/php-locationiq Version ^0.3.3
andydefer/laravel-nemesis Version ^1.22.23
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package andydefer/laravel-locationiq contains the following files

Loading the files please wait ...