ios CL地理编码器区域特定的错误域= kCLErr域代码=8“(空)”

hgqdbh6s  于 2023-02-17  发布在  iOS
关注(0)|答案(1)|浏览(347)

我有一个关于clgeocoder API的查询,基本上在我们的应用程序中,我们有一个规定,由用户手动添加地址给地区,城市和地方的细节等;当我尝试通过CLgeocoder geocodeAddressString API获取lat long值时,它抛出以下错误Error Domain=kCLErrorDomain Code=8“(null)”(此处选择的地区是秘鲁)。当我在设备中将地区更改为印度并手动添加地址时,它工作正常,我能够获取lat long值。
我附上下面的代码供参考
有人能帮助解决这个区域特定的问题吗?func getLatLong(){ let address =“1850,Av. angamos este,Municipalidad Metropolitana de Lima,Surquillo,秘鲁”let geocoder = CLGeocoder()

geocoder.geocodeAddressString(address) { (placemarks, error) in
        if error == nil {
            print(placemarks)
        } else {
            print(error)
        }
        
    }
}

IMA期望接收最新长值而不管设备中所选区域

70gysomp

70gysomp1#

下面是我的测试代码,创建一个新的XCode项目(ios)并使用这个示例代码。
在MacOS 13.2、Xcode 14.2、真实的的iOS 16.3设备(不是Previews)和MacCatalyst上测试,所有这些对我来说都很好。

import Foundation
 import SwiftUI
 import CoreLocation
 
 struct ContentView: View {
     @State var txt = ""
     
     var body: some View {
         Text(txt)
             .onAppear {
                 getLatLong()
             }
     }
     
     func getLatLong() {
         let address = " 1850, Av. angamos este , Municipalidad Metropolitana de Lima, Surquillo, PERU"
         let geocoder = CLGeocoder()
         geocoder.geocodeAddressString(address) { (placemarks, error) in
             if error == nil {
                 print("\n---> placemarks: \(placemarks)\n")
                 if let first = placemarks?.first,
                    let coord = first.location?.coordinate {
                     txt = "lat: \(coord.latitude)  lon: \(coord.longitude)"
                 }
             } else {
                 print("\n---> error: \(error)\n")
             }
         }
     }
 }

相关问题