ios 默认MkMapView区域

hyrbngr7  于 2023-04-22  发布在  iOS
关注(0)|答案(5)|浏览(190)

请告诉我什么是默认的Map位置时,它只是简单地添加到视图。我添加了mapview这样

MKMapView *mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0,  self.searchBar.frame.size.height, 320, 180)];

mapView.mapType=MKMapTypeStandard;

mapView.delegate=self; 

[self.view addSubview:mapView];

Map上显示的是什么位置?
这是根据设备坐标还是其他
谢谢

gmxoilav

gmxoilav1#

在谷歌搜索和阅读苹果Map文档之后。
我找到了解决方案,默认位置是设备本地,即在设置-〉一般-〉国际-〉ResionFormat-〉选择您的国家/地区。
Map将根据此设置聚焦。

kb5ga3dv

kb5ga3dv2#

我想系统会打个电话,苹果的服务器会返回这个信息。
我做了一个小测试与模拟器(额外信息:我在西班牙):
1.测试1
1.关闭互联网接入

  1. iOS模拟器〉重置内容和设置
    1.构建并运行带有mapview的应用程序
    1.打开互联网接入
    1.小滚动Map(只是为了改变区域一点,并开始与Map瓦片下载)
    1.美国显示在屏幕上
    1.测试2(不关闭互联网)
  2. iOS模拟器〉重置内容和设置
    1.构建并运行带有mapview的应用程序
    1.西班牙显示在屏幕上
    我不认为苹果在未经同意的情况下获取用户位置。这可能是一个基于操作系统的默认位置IP的请求。
lawou6xi

lawou6xi3#

我很确定它是纬度/经度0,0,这是在非洲上方的海洋中的某个地方。你认为这是一个错误,在一个惊人的数量的应用程序,不设置纬度,你最终看到一个Map显示的只是蓝色-大海。
建议你测试一下!

eulz3vhy

eulz3vhy4#

似乎没有答案是正确的,至少在iOS8中是这样。Apple没有提供有关mapView默认区域的文档信息,但我相信MapKit会向Apple服务器发出请求以获取当前国家/地区代码。事实上,如果您尝试关闭Internet连接并打开一个带有简单Map的viewcontroller,并将其作为子视图添加到主视图中,调试器将显示以下消息:

无法确定当前国家代码:Error Domain = GEOErrorDomain Code = 2“无法完成操作。(GEOErrorDomain错误-2。)

有一个未知的东西获取当前的国家代码,并在Map视图中显示该国家作为初始区域。这个“当前国家代码”与用户位置无关,因为该消息也是通过禁用位置服务显示的(除非苹果在未经用户授权的情况下获取用户位置这是不可能的)。也许它使用互联网连接的IP地址来进行IP tracert。我会尝试使用代理来验证。

r3i60tvu

r3i60tvu5#

你可以用
mapViewWillStartLoadingMap
delegate方法,在该方法中,您可以如下所示自定义位置坐标,
注意:这不需要位置许可检查或授权。

func mapViewWillStartLoadingMap(_ mapView: MKMapView) {

        let center = CLLocationCoordinate2D(latitude: 46.7111, longitude: 1.7191)

        let regionRadius: CLLocationDistance = 100_000

        let region = MKCoordinateRegion(center: center, latitudinalMeters: regionRadius * 2.0, longitudinalMeters: regionRadius * 2.0)

        mapView.setRegion(region, animated: true)
    }

相关问题