问题描述
|
我有一个向用户提供可缩放的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的示例。