我正在尝试使用 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/