2012-07-30 3 views
1

Вот мой код прямо сейчас. Я получаю обратные вызовы из диспетчера местоположений, но он не хочет увеличивать масштаб до местоположения.Использование диапазона для увеличения до местоположения пользователя

#import "MapViewController.h" 


@interface MapViewController() 

@property (nonatomic, strong) CLLocationManager *locationManager; 


@end 

@implementation MapViewController 

@synthesize mapView = _mapView; 
@synthesize mPlacemark = _mPlacemark; 
@synthesize location = _location; 
@synthesize mStoreLocationButton = _mStoreLocationButton; 
@synthesize locationManager = _locationManager; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
    // Custom initialization 
} 
return self; 
} 

- (void)viewDidLoad { 

[super viewDidLoad]; 
mapView=[[MKMapView alloc] initWithFrame:self.view.frame]; 
//mapView.showsUserLocation=TRUE; 
mapView.delegate=self; 
[self.view insertSubview:mapView atIndex:0]; 

NSLog(@"locationServicesEnabled: %@", [CLLocationManager locationServicesEnabled] ? @"YES":@"NO"); 
if ([self locationManager] == nil) { 
    CLLocationManager *newLocationManager = [[CLLocationManager alloc] init]; 
    [newLocationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
    [newLocationManager setDistanceFilter:kCLDistanceFilterNone]; 
    [self setLocationManager:newLocationManager]; 
} 

[[self locationManager] setDelegate:self]; 
[[self locationManager] startUpdatingLocation]; 
NSLog(@"Started updating Location"); 

} 


- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 

NSLog(@"Did update to location"); 
mStoreLocationButton.hidden=FALSE; 
location=newLocation.coordinate; 

MKCoordinateRegion region; 
region.center=location; 
MKCoordinateSpan span; 
span.latitudeDelta=0.01; 
span.longitudeDelta=0.01; 
region.span=span; 


[mapView setRegion:region animated:TRUE]; 


} 

Я могу опубликовать файл заголовка, если потребуется. В основном я просто занимаюсь масштабированием. Я просто не понимаю, почему он не работает.

ответ

1

Ваш код для - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation кажется правильным.

Попробуйте изменить линию

[self.view insertSubview:mapView atIndex:0]; 

к:

[self.view addSubview:mapView]; 

Это может быть, что MKMapView не перерисовывать себя из-за того, как он отображается в вашем представлении.

+0

Работал отлично. Спасибо. – Coltrane

+0

Теперь я заметил еще одну проблему. Изменение этой строки теперь скрывает uibutton, который я имел на карте. Нужно ли добавлять другое подвью в верхней части карты? – Coltrane

+0

Извините, понял. Еще раз спасибо за Ваш ответ. – Coltrane

Смежные вопросы