当我显示我的地图时,我希望显示用户在中心的位置以及大约的范围。用户周围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];
但这只是我的结果。
我做错了什么?
答案 0 :(得分:1)
您还没有等到mapView获取有效位置。如果您将控制器设置为mapView的委托,然后告诉mapview showUserLocation
,您最终会得到一个回调- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
,它将具有该设备的坐标。我怀疑你认为你不能放大或平移的原因是(0,0)在海洋中是可以消失的,而且一切都是蓝色的。也可能是您的MKMapView尚未设置为允许触摸交互,例如捏合和缩放,因此请检查您的xib是否已启用所有正确的复选框