我正在使用MKMapView
使用滑块设置可见区域(缩放级别)。
我使用MKCoordinateRegion
和setRegion:animated:
设置了可见区域。
问题在于我似乎无法对可见区域进行极其精确的控制。就好像纬度\经度增量一样可以捕捉到Google提供的默认~21缩放级别。
我真正想要的是捏缩放时Map.app的行为。它会缩放视图,直到达到新缩放级别的阈值,然后呈现新的地图级别。
是否有一种简单的方法来访问\模拟此行为?它是如何工作的?
我正在使用的代码:
MKCoordinateRegion region;
MKCoordinateSpan span;
CLLocationCoordinate2D center = {45.475969,-73.64095};
region.center = center;
span.latitudeDelta = 0.01;
span.longitudeDelta = 0.01;
region.span = span;
[mapView setRegion:region animated:TRUE];
如果我使用0.01或0.013的增量,我会得到完全相同的地图。
答案 0 :(得分:2)
简单的答案是,MapKit不允许您以编程方式设置缩放级别,而不是谷歌提供的默认21级别。您设置的区域范围将始终“捕捉”到最近的区域。
答案 1 :(得分:0)
您使用的是setRegion:动画:? http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html#//apple_ref/occ/instm/MKMapView/setRegion:animated:
答案 2 :(得分:0)
您可以设置mapview的visibleMapRect以实现连续缩放。 下面的代码显示了如何放大1级(它是MKMapView的子类,因此 self 是MKMapView的一个实例)。
MKMapRect visibleRect = self.visibleMapRect;
MKMapSize size = visibleRect.size;
CGFloat aspectRatio = size.width / size.height;
CGPoint center = CGPointMake(visibleRect.origin.x + size.width/2, visibleRect.origin.y + size.height/2);
CGFloat zoomedHeight = size.height / 2; // By divide by 2, will zoom in exact 1 level
CGFloat zoomedWidth = zoomedHeight * aspectRatio;
visibleRect = MKMapRectMake(center.x - zoomedWidth/2, center.y - zoomedHeight/2, zoomedWidth, zoomedHeight);
self.visibleMapRect = visibleRect;