1

当我显示我的地图时,我希望在中心显示用户的位置,并且跨度约为。用户周围 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地图后,现在显示为一个无法滚动或缩放的空蓝框。我想了一会儿它可能会显示海洋,但情况似乎并非如此,因为地图本身不会滚动。我尝试将距离设置为从 50m 到 25000m 的所有距离,效果相同。如果我打电话setRegion,那么缩小的世界地图会很好地显示,用户位置会按预期突出显示。

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

MKCoordinateRegion adjustedRegion = [mapView regionThatFits:region];

并替换 setRegion 消息如下:

[mapView setRegion:adjustedRegion animated:NO];

但这只是给我同样的结果。

我究竟做错了什么?

4

1 回答 1

1

您还没有等待您的 mapView 获得有效位置。如果您将控制器设置为 mapView 的代表,然后告诉 mapviewshowUserLocation您最终会收到一个回调- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation,该回调将包含设备的坐标。我怀疑你认为你不能缩放或平移的原因是 (0,0) 在海洋中是 waaaaay 并且一切都是蓝色的。也可能是您的 MKMapView 尚未设置为允许触摸交互,例如捏合和缩放,因此请检查您的 xib 是否打开了所有正确的复选框

于 2012-04-12T19:49:59.643 回答