首页 > 解决方案 > 如何从 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()
  }
}

它按预期返回了一个承诺,但是我似乎无法从承诺中返回值,但是我尝试了。我可能只是不知道如何将变量正确分配给承诺的值。

标签: javascriptgoogle-mapspromisegoogle-distancematrix-api

解决方案


推荐阅读