swift CoreLocation SDK上的CLGeocoder错误

bksxznpy  于 2023-01-29  发布在  Swift
关注(0)|答案(1)|浏览(107)
CLGeocoder().reverseGeocodeLocation(CLLocation(latitude: coord.latitude, longitude: coord.longitude)) { [weak self] placeMarks, error in
      print("PLACEMARKSFIRST:")
      print(placeMarks?.first)
      self?.geoCodeCounter += 1
       
      guard let place = placeMarks?.first else {
        self?.selectionSubject.accept(nil)
        self?.geoCodeAddress()
        return
      } 

print("PLACEMARKSFIRST:")
      print(placeMarks?.first)
      self?.geoCodeCounter += 1
       
      guard let place = placeMarks?.first else {
        self?.selectionSubject.accept(nil)
        self?.geoCodeAddress()
        return
      }
      print("PLACE:")
      print(place)
      print(place.administrativeArea)
      print(place.subAdministrativeArea)
      print(place.locality)
      print(place.subLocality)
      print(place.thoroughfare)
      print(place.subThoroughfare)
      self?.geoAdministrativeArea = place.administrativeArea ?? ""
      self?.geoSubAdministrativeArea = place.subAdministrativeArea ?? ""
      self?.geoLocality = place.locality ?? ""
      self?.geoSubLocality = place.subLocality ?? ""
      self?.geoThoroughfare = place.thoroughfare ?? ""
      self?.geoSubThoroughfare = place.subThoroughfare ?? ""

调试代码:

地点:达吕沙法卡5/2区,达吕沙法卡5/2区,伊斯坦布尔萨勒耶34457号,图尔基耶@〈+41.12570667,+29.02811721〉+/-100.00米,区域C圆形区域(标识符:'〈+41.12570100,+29.02817000〉半径70.68',中心:〈+41.12570100,+29.02817000〉,半径:70.68米)
任择(“伊斯坦布尔”)
可选(“Sarıyer”)
可选(“Sarıyer”)
可选(“查姆勒泰佩”)
可选(“Darüşafaka码”)
可选(“5/2”)
正如你在上面看到的,place中的locality和那个place的响应之间有冲突。locality返回。Locality必须是“Darüşafaka”。我该如何解决这个问题?
是关于CLGeocoder库中的错误吗?

lf5gs5x2

lf5gs5x21#

事实上,它不是一个错误,甚至不是一个错误,你可以修复。
您将获得AppleMap数据库中指定位置的locality
如果看到doc,您将看到:
例如,如果地标位置是Apple的总部,则此属性的值将是字符串“库比蒂诺”。
苹果总部的位置值是库比蒂诺,因为它在Map上是这样表示的。
因此,如果在您输入的坐标中将位置值定义为Sarıyer,则无法对其进行更改。
您可能需要检查和操作其他属性以获取所需的值

相关问题