我正在使用Rubymotion构建iOS应用。 在这个应用程序中我得到了一个mapview。我可以显示这个很好但我想设置初始缩放级别到注释区域而不是完全缩小视图。我怎么能这样做?
这是我的代码:
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
答案 0 :(得分:3)
您可以使用longitudeDelta
结构的latitudeDelta
和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类型,它是一个double) 两个成员都定义了地图显示的距离量:
➤ latitudeDelta - 一度纬度约为111公里(69英里)。
➤ longitudeDelta - 一度经度在赤道上跨越大约111公里(69英里)的距离,但在极点处缩小到0公里。 在放大和缩小地图时检查这两个结构的值 - 它们是地图缩放级别的表示。“
答案 1 :(得分:2)
如果要根据用户的位置进行缩放,请尝试以下操作:
MKUserLocation *userLocation = map.userLocation;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (userLocation.location.coordinate, 50, 50);
[map setRegion:region animated:NO];