kCLErrorDomain Code=8 和 kCLErrorDomain Code=0 iOS 海外地图使用报错 解决办法亲测有效

海外地图使用报错Domain=kCLErrorDomain Code=8

原因是你在国内测试海外地图功能如定位和导航等,iOS内置的地理地图权限导致在国内使用就会有高德地图的标识出现,

就意味着你只能正常使用国内地理信息比如通过坐标获取如:深圳

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(22.511973,113.922009); // 深圳的经纬度
//        // 创建一个CLLocation对象
//        CLLocation *location = [[CLLocation alloc] initWithCoordinate:coordinate altitude:0 horizontalAccuracy:kCLLocationAccuracyBest verticalAccuracy:kCLLocationAccuracyBest timestamp:nil];
//          
//        // 初始化CLGeocoder
//        CLGeocoder *geocoder = [[CLGeocoder alloc] init];
//          
//        // 使用CLGeocoder进行反向地理编码
//        [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
//            if (error) {
//                NSLog(@"Geocode failed with error: %@", error);
//                return;
//            }
//              
//            if (placemarks && placemarks.count > 0) {
//                CLPlacemark *placemark = placemarks[0];
//                  
//                // 输出位置信息
//                NSLog(@"Placemark: %@", placemark);
//                NSLog(@"ISO Country Code: %@", placemark.ISOcountryCode);
//                NSLog(@"Country: %@", placemark.country);
//                NSLog(@"Locality (City): %@", placemark.locality);
//                NSLog(@"SubLocality (Suburb, Town, etc.): %@", placemark.subLocality);
//                NSLog(@"Postal Code: %@", placemark.postalCode);
//                NSLog(@"Thoroughfare (Street Name): %@", placemark.thoroughfare);
//                NSLog(@"SubThoroughfare (Street Number, Street Name Extension): %@", placemark.subThoroughfare);
//                  
//                // 如果你需要更详细的地址组件,可以遍历placemark的addressComponents数组
////                for (CLLocationAddressComponent *component in placemark.addressComponents) {
////                    NSLog(@"Address Component Type: %@, Value: %@", component.type, component.value);
////                }
//            }
//        }];

然而当你切换到海外就会报错  报错Domain=kCLErrorDomain Code=8

那么怎么回事?原来是政治和地理因素决定的,这时候你要考虑科学的上网V P N(注册一个海外的苹果ID后在海外的apple Store  下载一个免费V P N即可如快喵VPN),然后是

2.1 更改地图服务
操作步骤:

//1. 关闭 蜂窝移动数据;
//2. 打开 无线局域网,连接一个WiFi;
//3. 打开 飞行模式;这里是必须的因为你是在国内而且是虚拟定位不然的话就会报 Metal API Validation Enabled 的错误

//4. 打开 VPN 360 或其他VPN应用,连接VPN;
//5. 杀掉Apple自带的“地图”应用;
//6. 重新打开Apple自带的“地图”应用,可以看到地图应用界面中的“高德地图”logo不见了。

 

到这里以后,你在调试经纬度坐标

 CLLocationDegrees latitude = -33.8571126363083; // 悉尼的纬度示例
    CLLocationDegrees longitude = 151.2151193250122; // 悉尼的经度示例

同样的代码就可以打印

此时你就可以拿到海外城市地理信息了!

中间你还可能遇到几个小插曲

⚠️ 1.Metal API Validation Enabled 的错误

解决办法:打开关闭切换一下飞行模式

 

 

⚠️2.为什么苹果定位不到国外?

解决办法:

手机在国外没法定位,主要是因为各个国家对软件有所限制造成的,解决方法如下:

1、首先,在自己的苹果手机里点击打开设置后台,如下图所示。

2、然后在打开的设置页面中,找到并点击隐私选项,如下图所示。

3、然后在打开的页面中,点击定位服务,此时默认打开的,如下图所示。

4、进入定位服务,关闭定位服务后面的按钮,然后点击关闭。

5、定位服务关闭成功,此时可以重新开启定位,最后返回手机主界面,点击地图进行重新定位即可。

 

 

posted on 2024-05-08 09:35  高彰  阅读(138)  评论(0编辑  收藏  举报

导航