我正在尝试将函数的结果保存在变量中
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)
但不起作用 我使用谷歌地图 API v3 - 距离矩阵部分
<script async defer
src="https://maps.googleapis.com/maps/api/jskey=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk">
</script>
myDistance
变量总是未定义的,您正在定义一个函数并立即调用它们以将其返回值分配给myDistance
变量。 但是这个函数没有任何回报。 此外,您可能会注意到调用Google API是一个异步函数,并且当Google完成工作时,您期望返回结果,然后您无法知道何时准备好响应。console.log(myDistance)
函数之后立即运行,不会等待谷歌 API 的响应,如果你想查看来自谷歌的结果console.log
请使用内部回调函数或使用async await
等待结果。