0

I have been trying to only get the distance and duration using the Google Distance Matrix API.

I tried and built and modified as I logically could but nothing. I even slice the response because I did not succeed to parse it.

I have multiple approaches but let show two script use.

function calculateDistance() {
  var origin = $('#origin').val();
  var destination = $('#destination').val();
  var service = new google.maps.DistanceMatrixService();
  
  service.getDistanceMatrix({
    origins: [origin],
    destinations: [destination],
    travelMode: google.maps.TravelMode.DRIVING,
    unitSystem: google.maps.UnitSystem.IMPERIAL, // Miles and feet.
    // unitSystem: google.maps.UnitSystem.metric, // Kilometers and meters.
    avoidHighways: false,
    avoidTolls: false
  }, callback);
}

// Get distance results.
function callback(response, status) {
  if (status != google.maps.DistanceMatrixStatus.OK) {
    $('#result').html(err);
  } else {
    var origin = response.originAddresses[0];
    var destination = response.destinationAddresses[0];
    
    if (response.rows[0].elements[0].status === "ZERO_RESULTS") {
      $('#result').html("Better use a plane. There are no roads between " + origin + " and " + destination);
    } else {
      var distance = response.rows[0].elements[0].distance;
      var duration = response.rows[0].elements[0].duration;
      
      console.log(response.rows[0].elements[0].distance);
      
      var distance_in_kilo = distance.value / 1000; // The kilometer.
      var distance_in_mile = distance.value / 1609.34; // The mile.
      var duration_text = duration.text;
      var duration_value = duration.value;
      
      $('#in_mile').text(distance_in_mile.toFixed(2));
      $('#in_kilo').text(distance_in_kilo.toFixed(2));
      $('#duration_text').text(duration_text);
      $('#duration_value').text(duration_value);
      $('#from').text(origin);
      $('#to').text(destination);
    }
  }
}

The second one:

<script>
// @ts-nocheck TODO remove when fixed

function initMap() {
  const bounds = new google.maps.LatLngBounds();
  const markersArray = google.maps.Marker = [];
  const map = new google.maps.Map(document.getElementById("map"), {
      center: {
        lat: 55.53,
        lng: 9.4
      },
      zoom: 10,
    });

  // Initialize services.
  const geocoder = new google.maps.Geocoder();
  const service = new google.maps.DistanceMatrixService();

  // Build request.
  const origin2 = "634 Pretorius street, Pretoria, South Africa";
  const destinationA = "263 luttig street, Pretoria, South Africa";
  const request = {
    origins: [origin2],
    destinations: [destinationA],
    travelMode: google.maps.TravelMode.DRIVING,
    unitSystem: google.maps.UnitSystem.METRIC,
    avoidHighways: false,
    avoidTolls: false,
  };

  // Put request on page.
  document.getElementById("request").innerText =
    JSON.stringify(request),

    // Get distance matrix response.
    service.getDistanceMatrix(request).then((response) => {
      // Put response.
      document.getElementById("response").innerHTML = JSON.stringify(response);
    });
}

function myDistance() {
  const x = document.getElementById("response").innerHTML;
  // const y = x.slice(43, 70);
  // JSON.parse(x);
  var y = x.rows[0].elements[0].distance.text;
  
  document.getElementById("distance").innerHTML = y;
}
</script>

I tried both script above. I want to only get the distance in km an the duration in minutes.

Sebastian Simon
  • 18,263
  • 7
  • 55
  • 75
  • I can't seem to reproduce your code on my end. Please provide a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) like a code snippet or the HTML code that you used so that the community would be able to check what's wrong. – Yrll Nov 16 '22 at 05:49
  • 1
    Hi , I thank u for the support you showed up. I figured out from the google route api. – John Christ BOUMA Jun 08 '23 at 18:36
  • Great to hear! You can still do it with DIrections API but would you mind providing the answer you came up with to this question you asked? It might be able to help others. – Yrll Jun 08 '23 at 23:03
  • Hi Sebastian, I provided the script! – John Christ BOUMA Jun 12 '23 at 00:22

0 Answers0