iphone увеличить до местоположения пользователя на mapkit - PullRequest
11 голосов
/ 16 июня 2010

Я использую комплект карт и показываю местоположение пользователя, используя "showsUserLocation" Я использую следующий код для увеличения масштаба до местоположения пользователя, но не для увеличения. Его увеличение до некоторого местоположения в Африке, хотя местоположение пользователя на карте отображается правильно.

MKCoordinateRegion newRegion; 
MKUserLocation* usrLocation = mapView.userLocation; 
newRegion.center.latitude = usrLocation.location.coordinate.latitude; 
newRegion.center.longitude = usrLocation.location.coordinate.longitude;
newRegion.span.latitudeDelta = 20.0;
newRegion.span.longitudeDelta = 28.0; 
[self.mapView setRegion:newRegion animated:YES];

Почему местоположение пользователя отображается правильно, а масштаб не корректно. Кто-нибудь может поправить меня, пожалуйста?

Ответы [ 3 ]

26 голосов
/ 06 июля 2010

mapView.userLocation задается для местоположения у побережья Африки (0,0) при первом создании.В результате я делаю что-то вроде следующего, что вызывает увеличение при появлении аннотации.Конечно, это всего лишь пример:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views {
    for(MKAnnotationView *annotationView in views) {
        if(annotationView.annotation == mv.userLocation) {
            MKCoordinateRegion region;
            MKCoordinateSpan span;

            span.latitudeDelta=0.1;
            span.longitudeDelta=0.1; 

            CLLocationCoordinate2D location=mv.userLocation.coordinate;

            region.span=span;
            region.center=location;

            [mv setRegion:region animated:TRUE];
            [mv regionThatFits:region];
        }
    }
}
3 голосов
/ 03 февраля 2013

вы можете попробовать:

mapView.userTrackingMode=YES;
mapView.userTrackingMode=NO;

UserTrackingMode увеличит масштаб до местоположения пользователя.

1 голос
/ 16 июня 2010

Вы убедились, что местоположение, возвращаемое mapView.userLocation, не равно 0, 0?

...