PHP code example of geocodio / geocodio-library-php
1. Go to this page and download the library: Download geocodio/geocodio-library-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
$response = $geocoder->geocode([
'1109 N Highland St, Arlington VA',
'525 University Ave, Toronto, ON, Canada',
'4410 S Highway 17 92, Casselberry FL',
'15000 NE 24th Street, Redmond WA',
'17015 Walnut Grove Drive, Morgan Hill CA'
]);
$response = $geocoder->reverse([
'35.9746000,-77.9658000',
'32.8793700,-96.6303900',
'33.8337100,-117.8362320',
'35.4171240,-80.6784760'
]);
// Optionally supply a custom key that will be returned along with results
$response = $geocoder->geocode([
'MyId1' => '1109 N Highland St, Arlington VA',
'MyId2' => '525 University Ave, Toronto, ON, Canada',
'MyId3' => '4410 S Highway 17 92, Casselberry FL',
'MyId4' => '15000 NE 24th Street, Redmond WA',
'MyId5' => '17015 Walnut Grove Drive, Morgan Hill CA'
]);
$response = $geocoder->geocode(
[
'1109 N Highland St, Arlington VA',
'525 University Ave, Toronto, ON, Canada'
],
[
'cd',
'timezone'
]
);
$response = $geocoder->reverse('38.9002898,-76.9990361', ['census2010']);
$response = $geocoder->geocode('1109 N Highland St, Arlington, VA', [], 1); // Only get the first result
$response = $geocoder->reverse('38.9002898,-76.9990361', ['timezone'], 5); // Return up to 5 geocoding results
// String format with ID
'37.7749,-122.4194,warehouse_1'
// Array format with ID
[37.7749, -122.4194, 'warehouse_1']
// The ID is returned in the response:
// [
// 'query' => '37.7749,-122.4194,warehouse_1',
// 'location' => [37.7749, -122.4194],
// 'id' => 'warehouse_1',
// 'distance_miles' => 3.2,
// 'distance_km' => 5.1
// ]
use Geocodio\Enums\DistanceMode;
use Geocodio\Enums\DistanceUnits;
use Geocodio\Enums\DistanceOrderBy;
use Geocodio\Enums\DistanceSortOrder;
// Available modes
DistanceMode::Straightline // Default - great-circle (as the crow flies)
DistanceMode::Driving // Road network routing with duration
// Available units
DistanceUnits::Miles // Default
DistanceUnits::Km
// Sorting options
DistanceOrderBy::Distance // Default
DistanceOrderBy::Duration
DistanceSortOrder::Asc // Default
DistanceSortOrder::Desc
use Geocodio\Enums\DistanceMode;
use Geocodio\Enums\DistanceUnits;
use Geocodio\Enums\DistanceOrderBy;
use Geocodio\Enums\DistanceSortOrder;
// Geocode an address and calculate distances to store locations
$response = $geocoder->geocode(
'1600 Pennsylvania Ave NW, Washington DC',
destinations: [
'38.9072,-77.0369,store_dc',
'39.2904,-76.6122,store_baltimore',
'39.9526,-75.1652,store_philly'
],
distanceMode: DistanceMode::Driving,
distanceUnits: DistanceUnits::Miles
);
/*
Response ],
[
'query' => '39.2904,-76.6122,store_baltimore',
'location' => [39.2904, -76.6122],
'id' => 'store_baltimore',
'distance_miles' => 38.2,
'distance_km' => 61.5,
'duration_seconds' => 2820
],
// ...
]
]
]
]
*/
// Reverse geocode with distances
$response = $geocoder->reverse(
query: '38.8977,-77.0365',
destinations: [
'38.9072,-77.0369,capitol',
'38.8895,-77.0353,monument'
],
distanceMode: DistanceMode::Straightline
);
// With filtering - find nearest 3 stores within 50 miles
$response = $geocoder->geocode(
'1600 Pennsylvania Ave NW, Washington DC',
destinations: [
'38.9072,-77.0369,store_1',
'39.2904,-76.6122,store_2',
'39.9526,-75.1652,store_3',
'40.7128,-74.0060,store_4'
],
distanceMode: DistanceMode::Driving,
distanceMaxResults: 3,
distanceMaxDistance: 50.0,
distanceOrderBy: DistanceOrderBy::Distance,
distanceSortOrder: DistanceSortOrder::Asc
);
use Geocodio\Enums\DistanceMode;
use Geocodio\Enums\DistanceUnits;
use Geocodio\Enums\DistanceOrderBy;
use Geocodio\Enums\DistanceSortOrder;
// Calculate distances from one origin to multiple destinations
$response = $geocoder->distance(
'37.7749,-122.4194,headquarters', // Origin with ID
[
'37.7849,-122.4094,customer_a',
'37.7949,-122.3994,customer_b',
'37.8049,-122.4294,customer_c'
]
);
/*
Response:
[
'origin' => [
'query' => '37.7749,-122.4194,headquarters',
'location' => [37.7749, -122.4194],
'id' => 'headquarters'
],
'destinations' => [
[
'query' => '37.7849,-122.4094,customer_a',
'location' => [37.7849, -122.4094],
'id' => 'customer_a',
'distance_miles' => 0.9,
'distance_km' => 1.4
],
// ...
]
]
*/
// Use driving mode for road network routing (
use Geocodio\Enums\DistanceMode;
use Geocodio\Enums\DistanceOrderBy;
use Geocodio\Enums\DistanceSortOrder;
// Find up to 2 nearest destinations from each origin
$response = $geocoder->distanceMatrix(
origins: ['37.7749,-122.4194'],
destinations: ['37.7849,-122.4094', '37.7949,-122.3994', '37.8049,-122.4294'],
maxResults: 2
);
// Filter by maximum distance (in miles or km depending on units)
$response = $geocoder->distanceMatrix(
origins: ['37.7749,-122.4194'],
destinations: [...],
maxDistance: 2.0
);
// Filter by minimum and maximum distance
$response = $geocoder->distanceMatrix(
origins: ['37.7749,-122.4194'],
destinations: [...],
minDistance: 1.0,
maxDistance: 10.0
);
// Filter by duration (seconds, driving mode only)
$response = $geocoder->distanceMatrix(
origins: ['37.7749,-122.4194'],
destinations: [...],
mode: DistanceMode::Driving,
maxDuration: 300, // 5 minutes
minDuration: 60 // 1 minute minimum
);
// Sort by duration descending
$response = $geocoder->distanceMatrix(
origins: ['37.7749,-122.4194'],
destinations: [...],
mode: DistanceMode::Driving,
maxResults: 5,
orderBy: DistanceOrderBy::Duration,
sortOrder: DistanceSortOrder::Desc
);
use Geocodio\Enums\DistanceMode;
use Geocodio\Enums\DistanceUnits;
// Create a new distance matrix job
$job = $geocoder->createDistanceMatrixJob(
name: 'My Distance Calculation',
origins: ['37.7749,-122.4194', '37.8049,-122.4294'],
destinations: ['37.7849,-122.4094', '37.7949,-122.3994'],
mode: DistanceMode::Driving,
units: DistanceUnits::Miles,
callbackUrl: 'https://example.com/webhook' // Optional
);
// Or use list IDs from previously uploaded lists
$job = $geocoder->createDistanceMatrixJob(
name: 'Distance from List',
origins: 12345, // List ID
destinations: 67890, // List ID
mode: DistanceMode::Straightline
);
echo $job['id']; // Job identifier
// Check job status
$status = $geocoder->distanceMatrixJobStatus($job['id']);
/*
[
'id' => 'abc123',
'name' => 'My Distance Calculation',
'status' => [
'state' => 'COMPLETED', // or 'PROCESSING', 'FAILED'
'progress' => 100,
'message' => 'Completed'
],
'download_url' => 'https://api.geocod.io/v2/distance-matrix/abc123/download',
'expires_at' => '2025-01-15T12:00:00.000000Z'
]
*/
// List all jobs
$jobs = $geocoder->distanceMatrixJobs();
$jobs = $geocoder->distanceMatrixJobs(page: 2); // Paginated
// Get job results as parsed array (same format as distance POST)
$results = $geocoder->getDistanceMatrixJobResults($job['id']);
/*
[
'results' => [
[
'origin' => ['query' => '...', 'location' => [...], 'id' => '...'],
'destinations' => [
['query' => '...', 'location' => [...], 'id' => '...', 'distance_miles' => 1.2, ...]
]
],
// ...
]
]
*/
// Or download to file for very large results
$geocoder->downloadDistanceMatrixJob($job['id'], '/path/to/results.json');
// Delete a job
$geocoder->deleteDistanceMatrixJob($job['id']);
// Using facade
use Geocodio;
$response = Geocodio::geocode('1109 N Highland St, Arlington, VA');
// Using dependency injection
use Geocodio\Geocodio;
class SomeController {
public function __construct(Geocodio $geocoder) {
$response = $geocoder->geocode('1109 N Highland St, Arlington, VA');
}
}