iOS5:当我设置MKMapView的区域时,它只显示一个蓝色框

时间:2012-04-12 00:29:17

标签: objective-c ios5 mkmapview

当我显示我的地图时,我希望显示用户在中心的位置以及大约的范围。用户周围5k距离。我的代码如下:

- (void)viewDidLoad
{
  [super viewDidLoad];
  mapView.mapType = MKMapTypeStandard;
  mapView.showsUserLocation = YES;
  MKUserLocation *userLocation = mapView.userLocation;
  MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(
                            userLocation.location.coordinate, 5000, 5000);
  [mapView setRegion:region animated:NO];
}

结果是,在调用setRegion之后,地图现在显示为无法滚动或缩放的空蓝框。我想了一会儿它可能会显示海洋,但似乎并非如此,因为地图本身不会滚动。我已经尝试将距离设置为50米到25000米之间,效果相同。如果我致电setRegion,那么缩小的世界地图会显示正常,用户位置会按预期突出显示。

在浏览了一些相关问题后,我也尝试插入以下一行:

MKCoordinateRegion adjustedRegion = [mapView regionThatFits:region];

并替换setRegion消息,如下所示:

[mapView setRegion:adjustedRegion animated:NO];

但这只是我的结果。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您还没有等到mapView获取有效位置。如果您将控制器设置为mapView的委托,然后告诉mapview showUserLocation,您最终会得到一个回调- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation,它将具有该设备的坐标。我怀疑你认为你不能放大或平移的原因是(0,0)在海洋中是可以消失的,而且一切都是蓝色的。也可能是您的MKMapView尚未设置为允许触摸交互,例如捏合和缩放,因此请检查您的xib是否已启用所有正确的复选框