由于 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,它在非洲海岸前面的某个地方。海洋 = 蓝色。
您将需要为位置管理器设置一个委托并等待确定您的位置,然后在您的地图中显示该区域。在您上面的代码中,您在启动位置管理器后立即请求位置。
我有一个最近开始出现的奇怪问题,我不知道为什么。
当我用这段代码初始化我的地图时,一切正常:
_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,它在非洲海岸前面的某个地方。海洋 = 蓝色。
您将需要为位置管理器设置一个委托并等待确定您的位置,然后在您的地图中显示该区域。在您上面的代码中,您在启动位置管理器后立即请求位置。