有没有办法修复MKMapView的中心点,特别是当用户更改缩放级别时?

时间:2014-05-13 17:03:45

标签: ios mkmapview

我尝试在一个点上设置地图视图中心,以便用户可以平滑地放大和缩小,但仍然保持在该点的中心位置。

通过在调用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设置了一个新区域并结束了缩放手势?

我有什么想法可以解决这个问题并保持中心点缩放?

1 个答案:

答案 0 :(得分:0)

我知道这很旧,但是我想出了一个解决方案,该方案似乎没有任何渲染问题。

  1. 在mapView上将scrollEnabledzoomEnabledrotateEnabled设置为false
  2. 向地图视图添加UIPinchGestureRecognizer
  3. 在捏手势识别器处理程序中,在手势开始时保存区域。您可以使用recognizer.state == .began进行检测。
  4. 在捏捏手势识别器处理程序中,当recognizer.state == .changed时,将起始区域的span.longitudeDeltaspan.latitudeDelta乘以recognizer.scale,然后执行mapView.setRegion,不进行动画处理。