获取两个位置之间的距离和时间的功能

Function to get distance and time between two location

本文关键字:距离 时间 功能 之间 位置 两个 获取      更新时间:2023-09-26

在这里,我下面有一个代码,当用户单击标记时,将显示谷歌放置API数据。

我还有一个两点位置,坐标(纬度,液化天然气),所以Point1[], Point2[]

我如何计算这个地方之间的道路距离(以公里和时间为单位)并以 HTML 显示。谷歌地图是否有计算此距离和时间的功能?

法典:

google.maps.event.addListener(marker,'click',function(){
        service.getDetails(request, function(place, status) {
          if (status == google.maps.places.PlacesServiceStatus.OK) {
            //class m_tooltip
            var contentStr = '<div><h5>'+place.name+'</h5><p>'+place.formatted_address+'</p>';
            if (!!place.photos) contentStr += '<img src='+place.photos[0].getUrl({ 'maxWidth': 500, 'maxHeight': 500 })+'></img>';
            if (!!place.formatted_phone_number) contentStr += '<br>'+place.formatted_phone_number;
            if (!!place.website) contentStr += '<br><a target="_blank" href="'+place.website+'">'+place.website+'</a>';
            var Point1 = [34,666, 56,888];
            var Point2 = [77.876, 45,555];
            contentStr += '<p>Distance in km:' + functionThatReturnRoadDistance(Point1, Point2) + '</p>';

            $(contentStr).dialog({
              modal:true
          });
          } else { 
            var contentStr = "<h5>No Result, status="+status+"</h5>";
           $(contentStr).dialog();
          }  
        });

那么是否有一些谷歌地图或类似的功能可以向我返回以米或公里为单位的距离,而不是地方之间的简单距离,而是道路/路线距离???

更新:我说这个:

function calculateDistances(start,stop) {
  var service = new google.maps.DistanceMatrixService();
  service.getDistanceMatrix(
    {
      origins: [start],
      destinations: [stop],
      travelMode: google.maps.TravelMode.DRIVING,
      unitSystem: google.maps.UnitSystem.METRIC,
      avoidHighways: false,
      avoidTolls: false
    }, callback);
}
  function callback(response, status) {
  if (status != google.maps.DistanceMatrixStatus.OK) {
    alert('Error was: ' + status);
  } else {
    var origins = response.originAddresses;
    var destinations = response.destinationAddresses;

    for (var i = 0; i < origins.length; i++) {
      var results = response.rows[i].elements;
      for (var j = 0; j < results.length; j++) {
       var xxx= "";
        xxx += origins[i] + ' to ' + destinations[j]
            + ': ' + results[j].distance.text + ' in '
            + results[j].duration.text + '<br>';
     return xxx;
      }
    }
  }
}

并用以下命令调用它:

  var start = document.getElementById("from").value;
        var stop = place.formatted_address;
        contentStr += '<p>'+ calculateDistances(start,stop); + '</p>';
        $(contentStr).dialog({
          modal:true
      });

但不要使用距离矩阵

根据 http://www.movable-type.co.uk/scripts/latlong.html

if (typeof(Number.prototype.toRad) === 'undefined')
{
  Number.prototype.toRad = function() {
    return this * Math.PI / 180;
  }
}
function getDistance(lat1, lon1, lat2, lon2) {
    var R = 6371; // km
    var dLat = (lat2-lat1).toRad();
    var dLon = (lon2-lon1).toRad();
    var lat1 = lat1.toRad();
    var lat2 = lat2.toRad();
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    var d = R * c;
    return d;
}

这里积分的一个例子:http://jsfiddle.net/dFqmG/(结果以公里为单位)

可以帮助你距离矩阵