0

アプリにデフォルトの地域を設定したいのですが、マップを開くたびに地域が表示されます。たとえば、マップを開くたびに「ロンドン」と表示されるはずです。

私はこれをしましたが、それはセンタリングされていません

@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];

しかし、それは私が望むものを中心としていません。これはシミュレータの問題でしょうか?

4

1 に答える 1

0

この機能を試すことができます。それは私のために働いた。

  • (void)recenterMap
    {

    NSArray *coordinates = [Mapsview valueForKeyPath:@"annotations.coordinate"];

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

    for(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;

    region.span.longitudeDelta = (maxCoord.longitude - minCoord.longitude) * 1.5; region.span.latitudeDelta = (maxCoord.latitude - minCoord.latitude) * 1.5;

    [Mapsview setRegion:地域アニメーション:YES];

}

于 2013-09-19T10:23:30.737 に答える