【发布时间】:2012-01-19 09:34:58
【问题描述】:
是否可以使用 MapKit 在 iPhone 中显示地图,就像我正在做的那样,在地图上显示缩放控件?
如果不是,我应该使用哪些标志或方法来增加和减少缩放,所以我可以创建方法,只需按一下按钮就可以做到这一点。
【问题讨论】:
标签: iphone objective-c map zooming
是否可以使用 MapKit 在 iPhone 中显示地图,就像我正在做的那样,在地图上显示缩放控件?
如果不是,我应该使用哪些标志或方法来增加和减少缩放,所以我可以创建方法,只需按一下按钮就可以做到这一点。
【问题讨论】:
标签: iphone objective-c map zooming
我不记得(在 Windows 框上工作)是否有显示缩放控件的开关。我假设您正在谈论显示缩放级别,因为默认情况下您可以捏合/展开视图以进行缩放。
如果没有显示控件的开关,那么您需要创建一个自定义视图层并将其放在 mapkit 视图的顶部。然后你需要调用不同的函数来改变缩放级别。
这些功能都记录在 mapkit 文档中。只需在文档中心搜索 MapKit。
根据文档,没有显示控件的开关,但启用缩放属性可让您打开和关闭该功能。
因此您可以订阅委托函数 regionWillChange 并使用 mapView 对象来获取缩放级别,然后相应地设置您的图形。
【讨论】:
没有任何内置控件。
几个建议:
您更改 mapView 区域中的跨度。所以你必须:
以下是建议 2 的一些代码:
MKCoordinateRegion region = mapView.region;
MKCoordinateSpan span;
span.latitudeDelta = region.span.latitudeDelta*2;
span.longitudeDelta = region.span.longitudeDelta*2;
region.span = span;
[mapView setRegion:region animated:TRUE];
【讨论】:
var region = mapView.region; var span = MKCoordinateSpan(); span.latitudeDelta = region.span.latitudeDelta*2; span.longitudeDelta = region.span.longitudeDelta*2; region.span = span; mapView.setRegion(region, animated: true);
我认为您不应该这样做,放大和缩小的预期方法是使用捏合手势。但是,如果您仍想继续执行此操作,则应将按钮放在MKMapView 上,然后修改MKMapView 的region 属性
【讨论】:
对于 swift 4,这是我使用的:
func zoom(_ zoomin : Bool) {
var region = mapView.region;
var span = MKCoordinateSpan();
span.latitudeDelta = zoomin ? region.span.latitudeDelta / 2 : region.span.latitudeDelta * 2;
span.longitudeDelta = zoomin ? region.span.longitudeDelta / 2 : region.span.longitudeDelta * 2;
region.span = span;
mapView.setRegion(region, animated: true);
}
【讨论】: