私はMKMapViewの使用方法を学ぼうとしており、そのためのサンプルアプリケーションを作成しました。ただし、私のコードではsetRegion:animated
、中心点とスパンを変更するように呼び出していますが、マップが更新されることはありません。StackOverflow(SO)でいくつかのスレッドを実行しましたが、他のスレッドも同様の問題について言及し、解決策を実装しようとしましたが、役に立ちませんでした。
私が見つけた他のSOスレッドに基づいて自分のコードで試してみたこと:
- MKMapViewをフレームで初期化したことを確認します
setRegion:animated
メインスレッドでメソッド呼び出しを実行してみました
以下に私のコードを含めましたが、MKMapViewインスタンスがビューを更新しない理由を誰かが明らかにすることができますか?
編集:以下に示す正しいコード: MK_ViewController.h:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface MV_ViewController : UIViewController {
IBOutlet MKMapView *myMapView;
MKCoordinateRegion defaultRegion;
CLLocationCoordinate2D defaultCenter;
MKCoordinateSpan defaultSpan;
}
@end
MK_ViewController.m:
#import "MV_ViewController.h"
@interface MV_ViewController ()
@end
@implementation MV_ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// initialize default map view properties
defaultCenter = CLLocationCoordinate2DMake(33.732894,-118.091718);
defaultSpan = MKCoordinateSpanMake(0.028270, 0.0465364);
// Setup MapView's inital region
defaultRegion = MKCoordinateRegionMake(defaultCenter, defaultSpan);
// create the map view
CGRect screenRect = [[UIScreen mainScreen] bounds];
myMapView = [[MKMapView alloc] initWithFrame:screenRect];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// update map's initial view
[myMapView setRegion:defaultRegion animated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
MK_ViewController + MKMapViewDelegate.m:
#import "MV_ViewController.h"
@implementation MV_ViewController (MKMapViewDelegate)
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
MKCoordinateRegion region = mapView.region;
CLLocationCoordinate2D center = region.center;
MKCoordinateSpan span = region.span;
NSLog(@"Center (lat,lon): (%f,%f)",center.latitude,center.longitude);
NSLog(@"Span (lat,lon): (%f,%f)",span.latitudeDelta,span.longitudeDelta);
}
@end