3

ユーザーにズーム可能な MKMapView を提供するアプリがあります。マップ ビューが最初に表示されたときに、ユーザーの好みの座標とズーム レベルを保存できるようにしたいと考えています。

現在、viewDidLoad では、最初のマップ プレゼンテーションの座標とズーム レベルのデフォルト セットを提供しています。

    zoomLocation.latitude = 55.50;
    zoomLocation.longitude = -5.50;

    // specify size of region to display
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 340.0*METERS_PER_MILE, 340.0*METERS_PER_MILE);

    // auto adjust region to fit screen
    MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];                

    // display the new region
    [mapView setRegion:adjustedRegion animated:YES];

私がやろうとしているのは、ユーザーがマップをスクロールして好みのデフォルト ビューにズームすると、[デフォルトの設定] ボタンを押して、ビューが読み込まれるたびに将来実装するために必要なプロパティを保存できることです。

ユーザーが選択したビューの座標を保存するには、次のようにします。

// gets coordinates of currently viewed map image
CGPoint pointCentrePoint = CGPointMake(mapView.frame.size.width/2, mapView.frame.size.height/2);
centrePoint = [mapView convertPoint:pointCentrePoint toCoordinateFromView:mapView]; 

NSLog(@"LAT: %f LON: %f", centrePoint.latitude, centrePoint.longitude);

私が苦労しているのは、ユーザーが選択した MKCoordinateRegion またはズーム レベルを保存する方法です。現在のビューのこのプロパティにアクセスできる方法はありますか?ビューがロードされたときに将来再利用できますか?

4

1 に答える 1

2

JavaScript の Google マップ API とは異なり、MKMapView には、すぐに利用できる「ズーム レベル」プロパティがありません (実際には必要ありません)。

region プロパティの center 値と span 値を操作します。

この質問は、リージョンを NSUserDefaults に保存/ロードする方法の例を示しています。

于 2011-06-03T12:17:38.617 に答える