0

我正在使用 Rubymotion 构建一个 iOS 应用程序。在这个应用程序中,我得到了一个地图视图。我可以很好地显示这个,但我想为注释区域设置一个初始缩放级别,而不是一个完全缩小的视图。我怎样才能做到这一点?

这是我的代码:

map = MKMapView.alloc.initWithFrame(CGRectMake(10, 10, (hash[:width]-20), (hash[:height]-20)))
    map.mapType = MKMapTypeStandard
    map.delegate = self
    map.showsUserLocation = true
    map.setCenterCoordinate(location, animated:true)
    map.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
4

2 回答 2

3

您可以使用结构的longitudeDeltalatitudeDelta字段MKCoordinateSpan

MKCoordinateSpan span; span.latitudeDelta = .001;
span.longitudeDelta = .001;
//the .001 here represents the actual height and width delta
MKCoordinateRegion region;
region.center = newLocation.coordinate; region.span = span;
[mapView setRegion:region animated:TRUE];

当然,您可以将跨度存储为例如默认缩放级别。

这是文档所说的:

"*地图显示的区域由 region 属性定义,它是一个 MKCoordinateRegion 类型的结构。MKCoordinateRegion 结构包含一个名为 center 的成员(类型为 CLLocationCoordinate2D)和另一个名为 span 的成员(类型为 MKCoordinateSpan)。MKCoordinateSpan 结构反过来又包含两个成员:latitudeDelta 和 longitudeDelta(都是 CLLocationDegrees 类型,它是双精度型)两个成员都定义了要为地图显示的距离量

latitudeDelta — 一个纬度大约是 111 公里(69 英里)

longitudeDelta — 1 度经度在赤道处跨越大约 111 公里(69 英里)的距离,但在两极缩小到 0 公里。在放大和缩小地图时检查这两个结构的值——它们是地图缩放级别的表示。"

于 2012-12-07T15:30:45.167 回答
2

如果要相对于用户的位置进行缩放,请尝试以下操作:

MKUserLocation *userLocation = map.userLocation;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (userLocation.location.coordinate, 50, 50);
[map setRegion:region animated:NO];
于 2012-12-07T14:54:24.660 回答