注釈が追加された後に実行される次の MKMapView メソッドを実装しました。Interface Builder で MKMapView マップ (parishMap) を「ユーザーの場所を表示」に設定しています。マップビューを読み込むと、マップビューに常に 1 秒ほどで青い点が表示されます。
Map View コントローラーの実装にあるコードは次のとおりです。
// Center map on user location (initially)
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for(MKAnnotationView *annotationView in views) {
if(annotationView.annotation == parishMap.userLocation) {
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta=0.03;
span.longitudeDelta=0.03;
CLLocationCoordinate2D location=parishMap.userLocation.coordinate;
location = parishMap.userLocation.location.coordinate;
region.span=span;
region.center=location;
[parishMap setRegion:region animated:TRUE];
[parishMap regionThatFits:region];
}
}
}
iPhone 4 でマップビューを開くと、マップビューは常に (そしてほぼ即座に) userLocation ドットの中央に移動します。ただし、iPhone 3Gs または iPod Touch (2010) でマップ ビューを開くと、userLocation が中央に表示されず、マップ ビューに設定したデフォルトのズーム/領域のままになります。
このコードが iPhone 4 以外のデバイス (すべて 4.2.x 最新の iOS を実行している) で機能しない理由について何か考えはありますか?