由于 SKCoordinateRegion,SKMap 未显示

SKMap not showing because of SKCoordinateRegion

我有一个最近开始出现的奇怪问题,我不知道为什么。

当我用这段代码初始化我的地图时,一切正常:

_mapView = [[SKMapView alloc] initWithFrame:CGRectMake( 0.0f, 0.0f,  CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame) )];

[self.view insertSubview:_mapView atIndex:0];

_mapView.settings.rotationEnabled = NO;
_mapView.settings.displayMode = SKMapDisplayMode2D;

[SKRoutingService sharedInstance].mapView = _mapView;

但是,当我想放大地图上的特定区域时,事情变得很奇怪,屏幕只是蓝色。

代码:

[self.locationManager startUpdatingLocation];
_lattitude = self.locationManager.location.coordinate.latitude;
_longitude = self.locationManager.location.coordinate.longitude;
SKCoordinateRegion region;
region.center = CLLocationCoordinate2DMake(_latitude, _longitude);
region.zoomLevel = 14;
_mapView.visibleRegion = region;
[self.locationManager stopUpdatingLocation];

截图:

现在,我想提一下蓝屏只出现在第一次启动时。如果我关闭应用程序并重新启动它,地图将正确显示(在模拟器和真实设备上)。

我追踪到是哪一段代码导致了这个问题,就是这段代码:

_mapView.visibleRegion = region;

我该如何解决这个问题?

可能位置管理器还没有收到它的位置,给你 0,0,它在非洲海岸前面的某个地方。海洋 = 蓝色。

您将需要为位置管理器设置一个委托并等待确定您的位置,然后在您的地图中显示该区域。在您上面的代码中,您在启动位置管理器后立即请求位置。