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

时间:2011-05-30 11:13:27

标签: ios mkmapview mkcoordinateregion mkcoordinatespan mapkit

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

1 个答案:

答案 0 :(得分:2)

与JavaScript Google Maps api不同,MKMapView没有现成的“缩放级别”属性(对于您的目的而言,它并不是必需的)。

使用region属性中的center和span值。

This question给出了如何将区域保存/加载到NSUserDefaults的示例。