我正在尝试使用 MKMapView 的 setRegion 在 iOS 应用程序中设置自定义起始区域。该应用程序运行良好,并出现 map ,但无论我尝试什么,我都无法更改区域。我尝试了很多教程和解决方案,但都没有奏效。这是我的代码:

-(void)viewDidAppear:(BOOL)animated{
    MKCoordinateRegion region;
    MKCoordinateSpan span;
    span.latitudeDelta  = 0.001;
    span.longitudeDelta = 0.001;

    region.span = span;
    region.center.latitude = 100;
    region.center.longitude = 100;

    [mapView setRegion:(region) animated:(TRUE)];
}

我已将 MKMapView 和 Core Location 框架正确添加到项目中,我导入 MapKit.h,并声明 mapView,所以我不知道为什么它不起作用。

谢谢,

雅各布

最佳答案

听起来 map View 的 IBOutlet 没有连接到 xib/storyboard 中的 map View 控件。

如果它没有连接,mapView 变量将是 nil 并且调用它的方法将什么也不做。

在 xib/storyboard 中,右键单击 View Controller 并将 mapView outlet 连接到 map View 控件。

此外,虽然不是仅仅设置区域所必需的,但也将 map View 的 delegate 导出连接到 View Controller 。如果您以后实现任何 map View 委托(delegate)方法,这将是必需的。如果不这样做,则不会调用委托(delegate)方法。

另一个单独的点:
在您的第一个代码示例中,您将区域的 center 设置为 100, 100。请注意,这是一个无效坐标。如果 map View 实际上已连接,则将 center 设置为此会导致“无效区域”崩溃。纬度必须在 -90 到 +90 之间(经度必须在 -180 到 +180 之间)。

顺便说一下,您在评论 (26, 80) 中发布的代码中尝试的新坐标位于印度。由于您将跨度设置为相对较小的值,因此您需要缩小很多才能看到这一点。

关于ios - MKMapView setRegion 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22751404/

10-13 02:50