我已将位置源和目的地声明为全局变量。但是尽管我没有在dist中获得正确的值。我应该如何在geoFire.getLocation()方法之外传递location的值?或者如何通过geofire来获取两个地理位置之间的距离?
我尝试通过将源和目标设为静态来实现。但这没用。
max
答案 0 :(得分:0)
Firebase API是异步的,这意味着onLocationResult()
方法在调用后立即返回,并且它返回的Task中的回调将在一段时间后调用。无法保证需要多长时间,可能需要几百毫秒到几秒钟才能获得该数据。
由于该方法会立即返回,因此尚未从回调中填充要尝试返回的dist
变量的值。
基本上,您正在尝试从异步的API同步返回值。那不是一个好主意。您应该按预期异步处理API。
对此问题的快速解决方案是仅在dist
方法内使用onLocationResult()
变量的值,否则我建议您从此 { {3}} ,其中我解释了如何使用自定义回调来完成。您也可以查看此 post 以获得更好的理解。