将函数getDistanceMatrix的结果保存在变量中

时间:2018-06-24 08:34:19

标签: javascript google-maps

我正在尝试将函数的结果保存在变量中

let myDistance = (()=>{
   let service = new google.maps.DistanceMatrixService();

   service.getDistanceMatrix(
   {
       origins: [{lat: 55.93, lng: -3.118}],
       destinations: [{lat: 50.087, lng: 14.421}],
       travelMode: google.maps.TravelMode.DRIVING,
       avoidHighways: false,
       avoidTolls: false
   }, callback );

   function callback(response, status) {
         let distance = 0;
         if(status=="OK") {
             distance = response.rows[0].elements[0].distance.value;
         } else {
             alert("Error: " + status);
         }
         return distance;
   }
})();
console.log(myDistance)

但不起作用 我使用Google Maps Api v3-“距离矩阵”部分

<script async defer
   src="https://maps.googleapis.com/maps/api/jskey=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk">
</script>

1 个答案:

答案 0 :(得分:0)

myDistance变量始终是未定义的,您正在定义一个函数并立即调用它们以将其返回值分配给myDistance变量。但是此功能没有任何帮助。 您还可能会注意到,调用google api是一个异步函数,并且在google完成工作后会返回预期结果,因此您不知道响应准备就绪的时间。 console.log(myDistance)立即在您的函数之后运行,并且如果您想查看来自Google的结果,则不等待Google api的响应,请在回调函数中使用console.log或使用async await来等待结果。< / p>