我尝试在一个点上设置地图视图中心,以便用户可以平滑地放大和缩小,但仍然保持在该点的中心位置。
通过在调用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设置了一个新区域并结束了缩放手势?
我有什么想法可以解决这个问题并保持中心点缩放?
答案 0 :(得分:0)
我知道这很旧,但是我想出了一个解决方案,该方案似乎没有任何渲染问题。
scrollEnabled
,zoomEnabled
和rotateEnabled
设置为false UIPinchGestureRecognizer
recognizer.state == .began
进行检测。recognizer.state == .changed
时,将起始区域的span.longitudeDelta
和span.latitudeDelta
乘以recognizer.scale
,然后执行mapView.setRegion
,不进行动画处理。