Web20 University

Getting The Distance Between Two Addresses using the Google Maps API in PHP

Get up to 65% Off Hosting with FREE SSL & FREE Domains!

* Web 2.0 University is supported by it's audience. If you purchase through links on our site, we may earn an affiliate commision.

In this tutorial, we’ll explore how to use the Google Maps API with PHP to calculate the distance between two addresses. This can be incredibly useful for applications ranging from delivery services to real estate websites.

Getting Started with Google Maps API

Obtaining a Google Maps API Key

Before we can use the Google Maps API, we need to obtain an API key. Here’s how:

  1. Go to the Google Cloud Console.
  2. Create a new project or select an existing one.
  3. Enable the APIs you need (Geocoding API and Distance Matrix API for this tutorial).
  4. Create credentials to get your API key.

Remember to keep your API key secure and never share it publicly.

Using Google Maps API with PHP

To interact with the Google Maps API using PHP, we’ll use cURL to make HTTP requests. Here’s a basic function to send requests:

function sendRequest($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);
    return json_decode($response, true);
}

Geocoding: Getting Coordinates from an Address

First, let’s create a function to convert an address into coordinates using the Geocoding API:

function getCoordinates($address, $apiKey) {
    $url = "https://maps.googleapis.com/maps/api/geocode/json?address=" . urlencode($address) . "&key=" . $apiKey;
    $response = sendRequest($url);
    
    if ($response['status'] == 'OK') {
        $lat = $response['results'][0]['geometry']['location']['lat'];
        $lng = $response['results'][0]['geometry']['location']['lng'];
        return array($lat, $lng);
    } else {
        return false;
    }
}

Calculating Distance Between Two Addresses

Now, let’s create a function to calculate the distance between two addresses using the Distance Matrix API:

function getDistance($origin, $destination, $apiKey) {
    $url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" . urlencode($origin) . "&destinations=" . urlencode($destination) . "&key=" . $apiKey;
    $response = sendRequest($url);
    
    if ($response['status'] == 'OK') {
        $distance = $response['rows'][0]['elements'][0]['distance']['text'];
        $duration = $response['rows'][0]['elements'][0]['duration']['text'];
        return array('distance' => $distance, 'duration' => $duration);
    } else {
        return false;
    }
}

Putting It All Together

Here’s an example of how to use these functions:

$apiKey = 'YOUR_API_KEY_HERE';

$address1 = '1600 Amphitheatre Parkway, Mountain View, CA';
$address2 = 'Golden Gate Bridge, San Francisco, CA';

$coords1 = getCoordinates($address1, $apiKey);
$coords2 = getCoordinates($address2, $apiKey);

if ($coords1 && $coords2) {
    $result = getDistance($address1, $address2, $apiKey);
    if ($result) {
        echo "Distance: " . $result['distance'] . "<br>";
        echo "Estimated travel time: " . $result['duration'];
    } else {
        echo "Unable to calculate distance.";
    }
} else {
    echo "Unable to geocode one or both addresses.";
}

Conclusion

In this tutorial, we’ve learned how to use the Google Maps API with PHP to geocode addresses and calculate distances between them. This functionality can be integrated into various applications to provide valuable location-based services.

Remember to always handle errors gracefully and respect the usage limits of the Google Maps API to avoid unexpected costs.

Key points to remember:

  1. Always keep your API key secure.
  2. Use error handling to manage API responses.
  3. Be mindful of API usage limits and costs.
  4. Consider caching results to reduce API calls for frequently requested addresses.

By leveraging the power of Google Maps API, you can create sophisticated location-based features in your PHP applications.

Get up to 65% Off Hosting with FREE SSL & FREE Domains!