setRegion:animated:不会进行区域更改

时间:2013-01-17 06:21:13

标签: objective-c ios6 mkmapview

我正在尝试获取用户位置并使用iOS6中的以下代码在mapView中显示:

- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
if (locations.count>0) {
    for (CLLocation *location in locations) {
        [locationList addObject:location];

        if (location != nil) {
            // Zoom to the current user location.
            MKCoordinateRegion userLocation =[mapView regionThatFits: MKCoordinateRegionMakeWithDistance(location.coordinate, 150.0, 150.0)];
            [mapView setRegion:userLocation animated:YES];
            NSLog(@"%f,%f", mapView.centerCoordinate.latitude,mapView.centerCoordinate.longitude);
            NSLog(@"%f,%f", mapView.region.span.latitudeDelta,mapView.region.span.longitudeDelta);
        }
    }
}

}

但在更新位置后,[mapView setRegion:userLocation animated:YES]不会对mapView的区域进行任何更改,但用户位置可以显示为蓝点。 NSLog打印如下:

nan,nan
0.000000,360.000000

这意味着没有任何改变。我检查了大多数相关地图的问题,他们只是调用这个方法并在地图中心显示位置。

我想知道为什么我如何将用户位置放到地图中心。

2 个答案:

答案 0 :(得分:0)

您可以打开MKMapView跟踪模式

[mapView setTrackingMode:MKMapViewTrackingModeFollowsUser];

答案 1 :(得分:0)

你可以试试这个:

mMapView.showsUserLocation = YES;