如何存储当前的MKCoordinateRegion或缩放级别?

问题描述

| 我有一个用户提供可缩放的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或缩放级别。有什么方法可以访问当前视图的此属性,以便将来在视图加载时可以重用?     

解决方法

        与JavaScript Google Maps api不同,MKMapView没有即时可用的“缩放级别”属性(对于您的目的,它并不是必需的)。 使用region属性中的center和span值。 这个问题给出了一个如何将区域保存/加载到NSUserDefaults的示例。