getLocationForKey (Geofire) という関数を使用して、ユーザーの位置を取得しようとしています。Location は Firebase に保存されます。この関数を func tableview で呼び出します。
// Get user Distance
var myLocation = CLLocation()
myLocation = getUserLocation(ref.authData.uid)
print("myLocation: [\(myLocation.coordinate.latitude), \(myLocation.coordinate.longitude)]")
getUserLocation は次のようになります。
func getUserLocation(userID: String) -> CLLocation {
var userLocation = CLLocation()
print(userID)
let geoFire = GeoFire(firebaseRef: ref.childByAppendingPath("locations"))
geoFire.getLocationForKey(userID, withCallback: { (location, error) in
if (location != nil)
{
userLocation = CLLocation(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
print("userLocation: [\(userLocation.coordinate.latitude), \(userLocation.coordinate.longitude)]")
}
else if (error != nil)
{
print("An error occurred getting the location for \(userID): \(error.localizedDescription)")
}
else
{
print("GeoFire does not contain a location for \(userID)")
}
})
return userLocation
}
その結果、私はこれを得る:
私の場所: [0.0, 0.0]
ユーザーの場所: [123.456, 123.456]
どういうわけか getLocationForKey のコードが飛び越えたので、私には奇妙に思えます。最初に myLocation を取得し、その後で userLocation を取得します。誰かが理由を知っていますか?どんな助けでも大歓迎です、ありがとう!