2013-04-03 8 views
0

Я хочу установить область по умолчанию для приложения, каждый раз, когда я открываю карту, она должна показывать регион. Например, каждый раз, когда я открываю карту, он должен показывать «Лондон».Карты Apple показывают область по умолчанию

Я сделал это, но это не центровки

@interface AppleMapViewController() 

@end 

@implementation TicinoWineAppleMapViewController 
@synthesize mapView = _mapView; 

#define DEFAULT_LATITUDE 46.006512 
#define DEFAULT_LONGITUDE 8.952312 

#define THE_SPAN 10.0f 


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

    } 
    return self; 
} 


- (void)viewWillAppear:(BOOL)animated 
{ 
    NSLog(@"ViewWillAppear"); 

} 

- (void)createDefaultRegion 
{ 
    MKCoordinateRegion defaultRegion; 

    CLLocationCoordinate2D center; 
    center.latitude = DEFAULT_LATITUDE; 
    center.longitude = DEFAULT_LONGITUDE; 

    MKCoordinateSpan span; 
    span.latitudeDelta = THE_SPAN; 
    span.longitudeDelta = THE_SPAN; 

    // defaultRegion.center = center; 
    // defaultRegion.span = span; 

    defaultRegion = MKCoordinateRegionMake(center, span); 

    TicinoWineMapViewAnnotation *annotation = [[TicinoWineMapViewAnnotation alloc]initWithTitle:@"ciao" andCoordinate:center]; 
    [_mapView addAnnotation:annotation]; 


    [_mapView setRegion:defaultRegion animated:YES]; 
    [_mapView setCenterCoordinate:center animated:YES]; 

} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self createDefaultRegion]; 


} 


@end 

Я попробовал оба метода:

[_mapView setRegion:defaultRegion animated:YES]; 
    [_mapView setCenterCoordinate:center animated:YES]; 

, но его не центрирования на то, что я хочу. Это может быть проблема симулятора?

+0

Вы пробовали это на реальном устройстве? – Steve

+0

нет, я все еще использую симулятор – Vannian

ответ

0

Вы можете попробовать эту функцию. Это сработало для меня.

  • (пустоты) recenterMap
    {

    NSArray * координаты = [Mapsview valueForKeyPath: @ "annotations.coordinate"];

    CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f};
    CLLocationCoordinate2D minCoord = {90.0f, 180.0f};

    для (значение NSValue * в координатах) {

    CLLocationCoordinate2D coord = {0.0f, 0.0f}; 
    
    [value getValue:&coord]; 
    
    if(coord.longitude > maxCoord.longitude) {    
        maxCoord.longitude = coord.longitude;    
    }   
    if(coord.latitude > maxCoord.latitude) {    
        maxCoord.latitude = coord.latitude;    
    }   
    if(coord.longitude < minCoord.longitude) {    
        minCoord.longitude = coord.longitude;    
    }   
    if(coord.latitude < minCoord.latitude) {    
        minCoord.latitude = coord.latitude; 
    }   
    

    }

    MKCoordinateRegion область = {{0.0f, 0.0f}, {0.0f, 0.0f}};

    //region.center.longitude = (minCoord.longitude + maxCoord.longitude)/2.0; // region.center.latitude = (minCoord.latitude + maxCoord.latitude)/2.0;

    region.center.longitude = minCoord.longitude + (maxCoord.longitude - minCoord.longitude) /2.0f; region.center.latitude = minCoord.latitude + (maxCoord.latitude - minCoord.latitude) /2.0f;

    регион.span.longitudeDelta = (maxCoord.longitude - minCoord.longitude) * 1.5; region.span.latitudeDelta = (maxCoord.latitude - minCoord.latitude) * 1.5;

    [Mapsview setRegion: region animated: YES];

}

+0

Попробуйте на устройстве лучшие результаты. – Karun

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

  • Нет связанных вопросов^_^