使用MKMapView连续缩放?
我正在使用一个MKMapView
这是可视区域(缩放级别)设置一个滑块。 我用MKCoordinateRegion
和setRegion:animated:
设置了可见区域。使用MKMapView连续缩放?
问题是,我似乎无法对可见区域进行非常精确的控制。就好像纬度\经度差值快速捕捉到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的增量,我得到完全相同的地图。
简单的回答是,MapKit不允许您以编程方式设置缩放级别,而不是由google提供的默认21级别。您设置的区域将始终“捕捉”到最近的区域。
你使用setRegion:animated:? http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html#//apple_ref/occ/instm/MKMapView/setRegion:animated:
当然,这就是我指定使用'MKCoordinateRegion'的原因。我更新了我的问题,以便更清楚。 –
您可以设置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;
对于我的爱,把配件后的标签! –
0.5和0.01之间的区别? –
是的,整体设置这样的区域工作正常。我似乎无法获得高精度。这就像三角洲地区对不同的“地图等级”的地板。 –