Calculate distance between two locations using PHP

In this article, we will introduce a simple example to calculate distance between two locations using the PHP programming language and the Google Map API.

JSON format by sending a request to the Google map geocode api. The distance calculation is helpful when your web application works with the user's location. The Google Maps Geocoding API helps to easily calculate the distance between two locations from latitude and longitude in kilometres or miles.

Calculate the distance between two locations using PHP

This is the main file, that we will call in the browser. This file contains two input boxes to enter source and destination addresses and a selection option to select the unit.

When the user clicks on the submit button, the getRouteDistance() method will be called. This function calls the Google API and gets the latitude and longitude of the entered addresses from json_encode and calculates the distance between them.

The getRouteDistance() function accepts three parameters-

  • $source_adrs - Required, Source address.
  • $dest_adrs - Required, Destination address.
  • $unit - Optional, the default unit is miles.

To use the Google Maps Geocoding API, you need to specify the API Key in your request. Before getting started, go to Google Cloud Platform Console for Geocoding API and generate an API key.


<!DOCTYPE html>
       <title>Calculate the distance between two locations</title>
       <link rel="stylesheet" href="" >
       <style type="text/css">
            .formbg { background-color: #66CCFF; padding: 10px 0 10px 20px; color: #191919;
                    border-radius: 10px;  border: 2px solid #6D0839; width: 780px; margin: 0 auto;
	   label { font-size: 18px; }
	   h1 {color: #003366;}

      function getRouteDistance($source_adrs, $dest_adrs, $unit){

          // Your API Key
          $apiKey = 'Your_Google_API_Key';

          //Send request and receive json data
          // Geocoding API request with source address
          $s_geocode = file_get_contents(''.$source_adrs.'&sensor=false&key='.$apiKey');
          $s_latlong = json_decode($s_geocode);

          // Geocoding API request with destinationaddress
          $d_geocode = file_get_contents(''.$dest_adrs.'&sensor=false&key='.$apiKey');
          $d_latlong = json_decode($d_geocode);

          //Get latitude and longitude
          $lat1 = $s_latlong->results[0]->geometry->location->lat;
          $long1 = $s_latlong->results[0]->geometry->location->lng;
          $lat2 = $d_latlong->results[0]->geometry->location->lat;
          $long2 = $d_latlong->results[0]->geometry->location->lng;

          //Calculate the distance from latitude and longitude
          $theta = $long1 - $long2;
          $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
          $dist = acos($dist);
          $dist = rad2deg($dist);
          $miles = $dist * 60 * 1.1515; 
          $unit = strtoupper($unit);

          // Convert unit and return distance
          if ($unit == "K") {
              return ($miles * 1.609344).' KM';
          } else {
              return $miles.' MI';
      <div class="form-group row formbg">

          // display the distance between locations on web page
          if(($_POST['source'] != '') && ($_POST['destination'] != '')) {
              $source = $_POST['source'];
              $destination = $_POST['destination'];
              $unit = $_POST['unit'];
              $source_adrs = str_replace(' ', '+', $source);
              $dest_adrs = str_replace(' ', '+', $destination);
              $distance = getRouteDistance($source_adrs, $dest_adrs, $unit);
              if($distance != '') {
                echo 'Distance Between <b>'.$source.'</b> and <b>'.$destination.' : </b><b>'.$distance.'</b>'

          <form action="" method="post">
             <div class="form-group row">
                <label class="col-xs-3 col-form-label">Enter Source Address: </label>
                <div class="col-xs-5">
                 <input class="form-control" type="text" name="source" value="" placeholder="Source">
             <div class="form-group row">
                <label class="col-xs-3 col-form-label">Enter Destination Address: </label>
                <div class="col-sm-5">
                 <input class="form-control" type="text" name="destination" value="" placeholder="Destination">
              <div class="form-group row">
                 <label class="col-xs-3 col-form-label">Unit: </label>
                 <div class="col-sm-5">
                  <select name="unit" class="form-control">
                      <option value="k">Kilometer</option>
                      <option value="m">Mile</option>
             <div class="form-group row">
                 <label class="col-xs-3 col-form-label"> </label>
                  <div class="col-sm-5">
                   <input class="btn btn-primary" type="submit" value="Submit"/>

Related Articles

How to insert image in database using PHP
PHP code to send SMS to mobile from website
PHP User Authentication by IP Address
PHP calculate percentage of total
How to lock a file using PHP
PHP remove last character from string
PHP User Authentication by IP Address
How to display PDF file in PHP from database
How to read CSV file in PHP and store in MySQL
Create And Download Word Document in PHP
PHP SplFileObject Standard Library
Simple File Upload Script in PHP
Sending form data to an email using PHP
Preventing Cross Site Request Forgeries(CSRF) in PHP
PHP code to send email using SMTP
Simple pagination in PHP
Simple PHP File Cache
PHP Connection and File Handling on FTP Server
Sending form data to an email using PHP
Recover forgot password using PHP and MySQL

Read more articles

General Knowledge

Learn Popular Language