如何从 SwiftLocation 5.1.0 中的位置获取 CLPlacemark?
How to get CLPlacemark from Location in SwiftLocation 5.1.0?
这是一个没有很好文档的库,过去,我在从以前的版本迁移到现代版本时遇到问题,现在,我又遇到了完全相同的问题。在 SwiftLocation 4 中,这是从某个位置获取地标的方法,将其传递给该位置的坐标:
SwiftLocation.LocationManager.shared.locateFromCoordinates(location.coordinate) { result in
switch result {
case .success(let places):
guard let receivedPlacemark = places.first?.placemark else {
return
}
logger.debug("Retrieved placemark: (receivedPlacemark.locality ?? "-")")
self?.currentPlacemark = receivedPlacemark
NotificationCenter.default.post(name: Constants.Notifications.placemarkUpdateNotification, object: nil)
case .failure(let error):
logger.error(error.localizedDescription)
NotificationCenter.default.post(name: Constants.Notifications.placemarkUpdateNotification, object: nil)
}
}
现在,在升级到 SwiftLocation 的 5.1.0 版本后,我根本无法在 GitHub 或库的 cocoapods 文档中找到如何对实际版本执行相同的操作。 SwiftLocation.LocationManager.shared.locateFromCoordinates
不存在,也找不到类似的东西。
如何使用 5.1.0 做到这一点?
您要实现的过程名称是地理编码。
据我所知,位置 API 发生了一些变化,因此您要查找的代码是(来自文档):
let service = // insert your service here
SwiftLocation.geocodeWith(service).then { result in
// You will get an array of suggested [GeoLocation] objects with data and coordinates
print(result.data)
}
其中service
应该等于您选择的服务,但是如果我们想使用Apple引擎获取给定坐标的数据,您可以尝试:
let service = Geocoder.Apple(coordinates: location) //location must be CLLocationCoordinate2D
这是一个没有很好文档的库,过去,我在从以前的版本迁移到现代版本时遇到问题,现在,我又遇到了完全相同的问题。在 SwiftLocation 4 中,这是从某个位置获取地标的方法,将其传递给该位置的坐标:
SwiftLocation.LocationManager.shared.locateFromCoordinates(location.coordinate) { result in
switch result {
case .success(let places):
guard let receivedPlacemark = places.first?.placemark else {
return
}
logger.debug("Retrieved placemark: (receivedPlacemark.locality ?? "-")")
self?.currentPlacemark = receivedPlacemark
NotificationCenter.default.post(name: Constants.Notifications.placemarkUpdateNotification, object: nil)
case .failure(let error):
logger.error(error.localizedDescription)
NotificationCenter.default.post(name: Constants.Notifications.placemarkUpdateNotification, object: nil)
}
}
现在,在升级到 SwiftLocation 的 5.1.0 版本后,我根本无法在 GitHub 或库的 cocoapods 文档中找到如何对实际版本执行相同的操作。 SwiftLocation.LocationManager.shared.locateFromCoordinates
不存在,也找不到类似的东西。
如何使用 5.1.0 做到这一点?
您要实现的过程名称是地理编码。
据我所知,位置 API 发生了一些变化,因此您要查找的代码是(来自文档):
let service = // insert your service here
SwiftLocation.geocodeWith(service).then { result in
// You will get an array of suggested [GeoLocation] objects with data and coordinates
print(result.data)
}
其中service
应该等于您选择的服务,但是如果我们想使用Apple引擎获取给定坐标的数据,您可以尝试:
let service = Geocoder.Apple(coordinates: location) //location must be CLLocationCoordinate2D