我正在尝试在一个点上设置地图视图中心,以便用户可以平滑地放大和缩小,但保持在该点的中心。
通过在调用regionDidChangeAnimated时使地图居中,加上一个标志来无限地循环代码,我的解决方案不是最优的...
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
if (!self.isRecentring) {
self.isRecentring = YES;
[mapView setCenterCoordinate:self.centreLocation animated:YES];
self.isRecentring = NO;
}
}
因此,只有当用户完成更改缩放后,它才有效,但这意味着可以快速滚动以重新定位地图。
我已尝试使用regionWillChangeAnimated等效,但这只会杀死变焦死亡,我假设因为我的setCentreCoordinate设置了一个新区域并结束了缩放手势?
任何想法我如何解决这个问题并保持中心点缩放?
我知道这是旧的,但我提出了一个似乎没有任何渲染问题的解决方案。
scrollEnabled
,zoomEnabled
和rotateEnabled
设置为falseUIPinchGestureRecognizer
添加到地图视图中recognizer.state == .began
来检测它。recognizer.state == .changed
时,将起始区域的span.longitudeDelta
和span.latitudeDelta
乘以recognizer.scale
并执行没有动画的mapView.setRegion
。