MapKit iPhone显示器Zoom Controls

问题描述 投票:1回答:4

是否可以使用MapKit在iPhone中显示地图,就像我正在做的那样,在地图上显示缩放控件?

如果没有,我应该使用什么标志或方法来增加和减少缩放,所以我可以创建方法,只需按一下按钮即可完成。

iphone objective-c map zoom zooming
4个回答
7
投票

它没有任何内置控件。

一些建议:

  1. 您可以预定义一些跨距并将它们存储在某个数组中,然后将您的位置存储在该数组中。放大/缩小会改变位置并获得跨度。
  2. 放大获取当前跨度并除以2,缩小乘以2。

您可以更改mapView区域中的范围。所以你必须:

  • 获取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];

1
投票

我不认为你应该这样做,放大和缩小的预期方法是使用捏合手势。但是如果你仍然想继续这样做,你应该把自己放在MKMapView上,然后用那些修改regionMKMapView属性


0
投票

如果有一个显示缩放控件的开关,我不记得(在Windows框上工作)。我假设您正在谈论显示缩放级别,因为默认情况下您可以捏合/展开视图以进行缩放。

如果没有显示控件的开关,则需要创建自定义视图图层并将其放在mapkit视图的顶部。然后,您需要调用不同的函数来更改缩放级别。

这些功能都记录在mapkit文档中。只需在文档中心搜索MapKit即可。

编辑:http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html#//apple_ref/doc/uid/TP40008205

根据文档,没有显示控件的开关,但启用缩放属性可让您打开和关闭该功能。

因此,您可以订阅委托函数regionWillChange并使用mapView对象获取缩放级别,然后相应地设置图形。


0
投票

对于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);
}
© www.soinside.com 2019 - 2024. All rights reserved.