javascript - 如何从 google.maps.DistanceMatrixService() 返回值?
问题描述
问题:
我已经尝试了尽可能多的方法,但我仍在努力从 googles 返回值DistanceMatrixService
。我想要做的是创建一个接收对象的函数:
{
id: id,
currentLat: lat,
currentLng: lng,
newLat: locationLat,
newLng: locationLng,
travelMode: travelMode
}
并返回一个新对象:
{
id:id,
distance: x,
timeTaken: x
}
使用DistanceMatrixService
如果我为此函数分配一个变量:
function getDurationObject(travelObj){
let duration
const origin1 = {lat,lng}
const destination1 = {lat: travelObj.newLat, lng: travelObj.newLng}
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin1],
destinations: [destination1],
travelMode: travelObj.travelMode,
unitSystem: google.maps.UnitSystem.IMPERIAL,
avoidHighways: false,
avoidTolls: false,
},callback)
function callback(response, status) {
if (status == 'OK') {
var results = response.rows[0].elements
var element = results[0]
duration = element.duration.text
}
return duration
}
}
它返回undefined
。
如果我尝试这个功能:
function getDurationObject(travelObj){
const getDistanceMatrix = (service, travelObj) => new Promise((resolve, reject) => {
service.getDistanceMatrix(travelObj, (response, status) => {
if(status === 'OK') {
resolve(response)
} else {
reject(response);
}
})
})
let getDistance = async () => {
const origin = {lat,lng}
const final = {lat: travelObj.newLat, lng: travelObj.newLng}
const service = new google.maps.DistanceMatrixService();
const result = await getDistanceMatrix(
service,
{
origins: [origin],
destinations: [final],
travelMode: travelObj.travelMode
}
)
const results = result.rows[0].elements
let response =
{distance:results[0].distance.text,
timeTaken:results[0].duration.text,
id:travelObj.id}
return response
}
return getDistance()
}
}
它按预期返回了一个承诺,但是我似乎无法从承诺中返回值,但是我尝试了。我可能只是不知道如何将变量正确分配给承诺的值。
解决方案
推荐阅读
- c - 如果缺少某些字段,我想知道如何存储以分号分隔的文本的输入
- javascript - 如何将图像 URI 转换为字节博览会
- react-native - KeyBoard 避免使用绝对位置元素查看视图
- ruby - OctoKit Ruby 身份验证
- reactjs - 单击时不显示模态(React)
- c# - Ocelot .NET Core 平衡问题与已关闭的微服务
- firebase - Firestore 如果文档不存在则创建文档,如果存在则跳过
- python - 使用 Python 提取文本中多次出现的字符串的周围字符
- python - 如何为格式化数据添加多重性?
- apache-spark - Spark Structured Streaming Kafka 集成 - 流式查询