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

问题描述 投票:2回答:1

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

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

任何想法我如何解决这个问题并保持中心点缩放?

ios mkmapview
1个回答
0
投票

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

  1. 在地图上将scrollEnabledzoomEnabledrotateEnabled设置为false
  2. UIPinchGestureRecognizer添加到地图视图中
  3. 在捏合手势识别器处理程序中,在手势开始时保存区域。您可以使用recognizer.state == .began来检测它。
  4. 在捏手势识别器处理程序中,当recognizer.state == .changed时,将起始区域的span.longitudeDeltaspan.latitudeDelta乘以recognizer.scale并执行没有动画的mapView.setRegion
© www.soinside.com 2019 - 2024. All rights reserved.