我对此很陌生,但我一直在设法通过获取我的 IOS 设备的当前位置...等唯一的问题是,我似乎无法让 GMSPlace 保持分配给我在班级顶部声明的属性,我计划在另一个函数中使用它。
当我在回调范围内运行打印语句时它工作正常,但是当我似乎使用存储在“queryPlace”中的值时,它返回一个“nil”。我猜这是一个范围和生命周期的问题,但我不确定我是否理解正确。
这是我难以理解为什么它不具有“位置”值的代码:
import UIKit
import CoreLocation
import GoogleMaps
import GooglePlaces
class GoogleMapSearchVC : UIViewController, CLLocationManagerDelegate {
var placeQuery: GMSPlace?
func loadCurrentPosition() {
print("Loading Positions and Coords")
// Invoke Callback method to get GMSPlacesLiklihood
placesClient.currentPlace(callback: { (placeLikelihoodList, error) -> Void in
if let error = error {
print("Pick Place error: \(error.localizedDescription)")
return
}
if let placeLikelihoodList = placeLikelihoodList {
let place = placeLikelihoodList.likelihoods.first?.place
if let place = place {
self.updateMap(newLocation: place)
// updateMap function moves camera to current location.
self.placeQuery = place
// If I print(self.placeQuery) here, it works fine, but later on placeQuery returns nil.
}
}
})
}
func doSomethingWithPlace() {
print(self.placeQuery?coordinate.latitude)
// Returns 'nil'
}
}
提前感谢您的帮助,非常感谢。