Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps api 3 距离矩阵谷歌地图javascript api3_Google Maps Api 3_Distance_Duration - Fatal编程技术网

Google maps api 3 距离矩阵谷歌地图javascript api3

Google maps api 3 距离矩阵谷歌地图javascript api3,google-maps-api-3,distance,duration,Google Maps Api 3,Distance,Duration,我玩距离矩阵 获取从一个起点到多个目的地的持续时间。 我有以下代码: var duration = new Array(); var service = new google.maps.DistanceMatrixService(); service.getDistanceMatrix( { origins: [origin], destinations: destination, travelMode: google.m

我玩距离矩阵

获取从一个起点到多个目的地的持续时间。 我有以下代码:

var duration = new Array();
    var service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix(
    {
        origins: [origin],
        destinations: destination,
        travelMode: google.maps.TravelMode.DRIVING,
        avoidHighways: false,
        avoidTolls: false
    }, 
    function(response, status)
    {
        if (status == google.maps.DistanceMatrixStatus.OK)
        {
            var destinations = response.destinationAddresses;
            var results = response.rows[0].elements;

            for (var j = 0; j < results.length; j++)
                duration[j] = results[j].duration.value;
        }
    });
    alert(duration[0]);
var duration=new Array();
var service=new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
来源:[来源],
目的地:目的地,
travelMode:google.maps.travelMode.DRIVING,
避免:错误,
避免收费:错误
}, 
功能(响应、状态)
{
if(status==google.maps.DistanceMatrixStatus.OK)
{
var destinations=response.destinationaddress;
var results=response.rows[0]。元素;
对于(var j=0;j
但我有“未定义”的警告。当我把alert命令放在回调函数中时,我得到了我想要的警报。这是为什么???我怎样才能修好它


提前谢谢你

将警报移到回调中。该函数是异步执行的回调函数。

var duration=new Array();
var duration = new Array();
function calculate_distance(){
    var service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix(
    {
        origins: [origin],
        destinations: destination,
        travelMode: google.maps.TravelMode.DRIVING,
        avoidHighways: false,
        avoidTolls: false
    }, 
    function(response, status)
    {
        if (status == google.maps.DistanceMatrixStatus.OK)
        {
            var destinations = response.destinationAddresses;
            var results = response.rows[0].elements;

            for (var j = 0; j < results.length; j++)
                duration[j] = results[j].duration.value;
        }
    });
}
google.maps.event.addListener(autocomplete, 'place_changed', calculate_distance);
alert(duration[0]);
函数计算_距离(){ var service=new google.maps.DistanceMatrixService(); service.getDistanceMatrix( { 来源:[来源], 目的地:目的地, travelMode:google.maps.travelMode.DRIVING, 避免:错误, 避免收费:错误 }, 功能(响应、状态) { if(status==google.maps.DistanceMatrixStatus.OK) { var destinations=response.destinationaddress; var results=response.rows[0]。元素; 对于(var j=0;j

尝试类似的方法

距离矩阵每次可以计算25个距离。我要计算200个距离,然后对它们进行排序,以便将它们输出到表中。我不能异步这样做,因为我将有一个每次25个距离的排序表。我希望你理解我的意思。我理解,但这仍然不是你试图使用的服务涉及异步请求的事实。你将不得不执行批处理请求,并存储结果,以便在最后一批完成后处理。我向OP提出了一个类似的问题。在最后一批完成后,如何获得指示?计算你提出了多少查询以及返回了多少查询。要提高你文章的质量,请包括你的帖子将如何/为什么解决这个问题。