我有一个名为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];
看到文档。