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