Geolib功能没有返回值



我正在调用该函数以使LAT的距离长,但是它返回了未定义的。

onCollectionUpdate = (querySnapshot) => {
 const distance = this.getDistance(latitude, longitude)
        console.log('distance', distance)
}

这是我的功能。

getDistance(latitude, longitude) {
    navigator.geolocation.getCurrentPosition(
        function (position) {
            var distance = geolib.getDistance(position.coords, {
                latitude: parseInt(latitude),
                longitude: parseInt(longitude),
            })
            console.log('distance:', distance) //getting right value 54209m
            return distance;
        },
        function () {
            alert('Position could not be determined.')
        },
        {
            enableHighAccuracy: true
        }
    );
}

您需要将getCurrentPosition包裹在承诺中,以便您可以解决距离,试图返回像您正在做的事情一样行不通。

这意味着getDistance现在将返回承诺。当您有距离时,该诺言将resolve,当您遇到错误时它将reject

getDistance = async (latitude, longitude) => {
  return new Promise((resolve, reject) => {
    navigator.geolocation.getCurrentPosition(position => {
      var distance = geolib.getDistance(position.coords, {
        latitude: parseInt(latitude),
        longitude: parseInt(longitude),
    })
    console.log('distance:', distance); //getting right value 54209m
    resolve(distance);
    }, err => {
      reject(err);
    },
    {
      enableHighAccuracy: true
    }
    );
  })
}

然后,您应该更新onCollectionUpdate功能,以处理您的getDistance功能将返回的承诺。请注意,您必须将其包装在try/catch中,因为await功能可以投掷。

onCollectionUpdate = async (querySnapshot) => {
  try  {
    const distance = await this.getDistance(latitude, longitude);
    console.log('distance', distance);
  } catch (err) {
    alert('Position could not be determined.') // <- put the alert here as this is where the error will be caught
  }       
}

相关内容

  • 没有找到相关文章

最新更新