Javascript 谷歌地图-计算3个点之间的路线长度

Javascript 谷歌地图-计算3个点之间的路线长度,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我有一个简单的脚本来计算两个地方之间的距离。我有2个自动完成输入。这就像我想要的,但我需要补充一件事。假设我有点B和C。我的脚本将计算它们之间的路线,但我想添加另一个静态点A(我知道它的坐标)。所以,我需要计算A和B之间的距离,然后计算B和C之间的距离,并将结果相加。简单例子 A -> B = distance 20km B -> C = distance 130km total = 150 下面是我的代码 $(函数(){ //添加输入侦听器 google.maps.event.

我有一个简单的脚本来计算两个地方之间的距离。我有2个自动完成输入。这就像我想要的,但我需要补充一件事。假设我有点B和C。我的脚本将计算它们之间的路线,但我想添加另一个静态点A(我知道它的坐标)。所以,我需要计算A和B之间的距离,然后计算B和C之间的距离,并将结果相加。简单例子

A -> B = distance 20km
B -> C = distance 130km
total = 150
下面是我的代码

$(函数(){
//添加输入侦听器
google.maps.event.addDomListener(窗口'load',函数(){
var from_places=new google.maps.places.Autocomplete(document.getElementById('from_places'));
var to_places=new google.maps.places.Autocomplete(document.getElementById('to_places'));
google.maps.event.addListener(来自'place'place'changed',function()){
var from_place=from_places.getPlace();
var from_address=from_place.formatted_address;
$('#origin').val(来自#地址);
});
google.maps.event.addListener(to_places,'place_changed',function(){
var to_place=to_places.getPlace();
var to_address=to_place.formatted_address;
$(“#目的地”).val(收件人地址);
});
});
//计算距离
函数CalculateInstance(){
var origin=$('#origin').val();
var destination=$('#destination').val();
var service=new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
来源:[来源],
目的地:[目的地],
travelMode:google.maps.travelMode.DRIVING,
//unitSystem:google.maps.unitSystem.IMPERIAL,//英里和英尺。
单位制:google.maps.unitSystem.metric,//公里和米。
避免:错误,
避免收费:错误
},回调);
}
//获得距离结果
函数回调(响应、状态){
if(status!=google.maps.DistanceMatrixStatus.OK){
$('#result').html(err);
}否则{
var origin=response.originAddresses[0];
var destination=response.destinationaddress[0];
if(response.rows[0]。elements[0]。status==“ZERO\u RESULTS”){
$(“#result”).html(“最好上飞机,“+起点+”和“+终点”之间没有道路);
}否则{
var distance=响应。行[0]。元素[0]。距离;
var duration=response.rows[0]。元素[0]。duration;
console.log(response.rows[0]。元素[0]。距离);
var distance_in_kilo=distance.value/1000;//千米
var distance_in_mile=distance.value/1609.34;//英里数
var duration_text=duration.text;
var duration_值=duration.value;
var总成本=距离(单位:千克)*3.44;
//$('以英里为单位').text(距离以英里为单位.toFixed(2));
$(“#in_kilo”).text(距离(以_kilo.toFixed(2)+“km”);
//$('duration_text')。text(duration_text);
//$(“#持续时间_值”)。文本(持续时间_值);
$('#from')。文本(来源);
$('to')。文本(目的地);
$(“#cost').text(总#cost.toFixed(2)+“zł”);
}
}
}
//在提交表单时打印结果
$(“#距离形式”)。提交(函数(e){
e、 预防默认值();
计算站();
});
});

来源:
目的地:
  • 距离为千克:
  • 发件人:
  • 致:
  • 费用:

将两个源放在源数组中,将两个目标放在目标数组中

service.getDistanceMatrix(
{
    origins: [A, B],
    destinations: [B, C],
    travelMode: google.maps.TravelMode.DRIVING,
    unitSystem: google.maps.UnitSystem.metric, // kilometers and meters.
    avoidHighways: false,
    avoidTolls: false
}, callback);

我不知道如何在代码中添加静态点。我也尝试将点添加到起点数组和目的地数组,但计算不正确。您是否可以对距离矩阵服务进行两次调用,调用#1是点a到点B,然后调用#2是点B到点C?是的,这是一个解决方案。但这是好的做法吗?可能是重复的