当跨度改变时,MKCoordinateregion的中心会发生变化 - iPhone



我有一个名为region的mkcoordinatereregion。我想改变这个区域张成的空间而不改变它的中心。我正在使用以下方法更改缩放

 -(void) changeZoom
    {
     NSLog(@"before zoom span, center are   %f, %f,%f,%f", region.span.latitudeDelta, region.span.longitudeDelta, mymap.centerCoordinate.latitude, mymap.centerCoordinate.longitude);
                region.span.latitudeDelta = current_factor ;
                region.span.longitudeDelta = current_factor ;
                region.center.latitude = mymap.centerCoordinate.latitude ;
                region.center.longitude = mymap.centerCoordinate.longitude ;
                [mymap setRegion:region animated:TRUE];
                NSLog(@"after zoom span, center are   %f, %f,%f,%f", region.span.latitudeDelta, region.span.longitudeDelta, mymap.centerCoordinate.latitude, mymap.centerCoordinate.longitude);
    }

日志显示:

before zoom span, center are   0.021950, 0.021950,19.068080,72.838111
 after zoom span, center are   0.043901, 0.043901,19.068040,72.838154

该方法精确地设置了所需的跨度。但我不希望中心的坐标有任何变化,因为当我缩小再缩小时,我最终会在一个不同于起始位置的位置。

有没有什么方法可以在不改变中心的情况下放大和缩小?

感谢您的帮助。

你的前后中心坐标几乎完全相同,所以这不应该是一个问题。如果你真的想要完全相同的中心坐标,在使用setRegion:animated:之后调用setCenterCoordinate:animated:并传递一些保存的中心坐标。

CLLocationCoordinate2D originalCenter = mymap.centerCoordinate;
// ... adjust region
[mymap setCenterCoordinate:originalCenter animated:NO];

此外,您应该使用YES而不是TRUE来表示布尔值:

[mymap setRegion:region animated:YES];

您需要调整地图的区域,以确保长宽比适合地图视图的帧大小。

一旦计算出所需中心的区域,将该区域调整为,

MKCoordinateRegion adjustedRegion = [mymap regionThatFits:region];
[mymap setRegion:adjustedRegion animated:TRUE];

看到文档。

相关内容

  • 没有找到相关文章

最新更新