Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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
Javascript 谷歌距离矩阵需要返回值_Javascript_Jquery_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌距离矩阵需要返回值

Javascript 谷歌距离矩阵需要返回值,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我使用google distance matrix api通过以下方式获得两个地理点的最短距离: <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script> <script> var origin1 = new google.maps.LatLng(9.6667, 80.0000); var destinationA =

我使用google distance matrix api通过以下方式获得两个地理点的最短距离:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
<script>

    var origin1 = new google.maps.LatLng(9.6667, 80.0000);
    var destinationA = new google.maps.LatLng(9.6689, 80.0059);



    function calculateDistances() {


        var service = new google.maps.DistanceMatrixService();
        service.getDistanceMatrix(
            {
                origins: [origin1],
                destinations: [destinationA],
                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;


            for (var i = 0; i < origins.length; i++) {
                var results = response.rows[i].elements;
                for (var j = 0; j < results.length; j++) {
                    alert(results[j].distance.text);
                }
            }
        }
    }


</script>

var origin1=新的google.maps.LatLng(9.6667,80.0000);
var destinationA=new google.maps.LatLng(9.6689,80.0059);
函数CalculateInstances(){
var service=new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
起源:[原文1],
目的地:[目的地],
travelMode:google.maps.travelMode.DRIVING,
unitSystem:google.maps.unitSystem.METRIC,
避免:错误,
避免收费:错误
},回调);
}
函数回调(响应、状态){
if(status!=google.maps.DistanceMatrixStatus.OK){
警报(“错误为:”+状态);
}否则{
var origins=response.originAddresses;
对于(变量i=0;i

在这段代码中,我成功地获得了最短距离。但是我需要在调用方法CalculateInstances()时返回该值,而不是警告该值。在回调方法中我该怎么做

我会将一个数组作为一个全局变量,包含元素的数量和一个全局变量。然后,在回调中,我将增加元素的数量,并将当前数组元素设置为距离


希望这能回答你的问题。祝你好运

距离矩阵服务是异步的,因此,您需要传递一个
回调
方法,以便在请求完成时执行,以处理结果。但是你可以考虑将异步API转换成承诺。 以下示例演示如何使用jQuery将距离矩阵服务API转换为承诺:

var origin1=新的google.maps.LatLng(9.6667,80.0000);
var destinationA=new google.maps.LatLng(9.6689,80.0059);
函数计算状态(起点、终点){
var service=new google.maps.DistanceMatrixService();
var d=$.Deferred();
service.getDistanceMatrix(
{
起源:起源,
目的地:目的地,
travelMode:google.maps.travelMode.DRIVING,
unitSystem:google.maps.unitSystem.METRIC,
避免:错误,
避免收费:错误
}, 
功能(响应、状态){
if(status!=google.maps.DistanceMatrixStatus.OK){
d、 拒绝(状态);
}否则{
d、 决心(回应);
}
});
返回d.promise();
}
计算位置([origin1],[destinationA])
.完成(功能(响应){
var origins=response.originAddresses;
对于(变量i=0;i


回调意味着不为返回值执行Show我可以将此方法更改为返回方法吗?为什么需要“返回”数据?DirectionsMatrix是异步的,您不能从它的回调函数返回任何内容,您必须在回调函数中的数据可用时使用它。你还没有告诉use你试图对返回的数据做什么。我需要返回数据并将它们存储在一个数组中。我根据这里的评论添加了一个更新的答案,以防你仍然需要。祝你好运!