繁体   English   中英

单击按钮后如何缩放到地图上的特定位置。 我正在使用swift和MapKit

[英]How can I zoom to a particular location on a map on button click. I am using swift and MapKit

这是按钮动作在我的视图控制器中的外观。

     func mapButtonClickedInScrollview(sender: UIButton) {
         let myWorldViewController = MyWorldViewController(nibName: "MyWorldViewController", bundle: nil)
         self.navigationController?.pushViewController(myWorldViewController, animated: true)
     }

这是在另一个视图控制器(即MyWorldViewController)中设置的地图的外观:

   [enter link description here][1]

因此,当我单击该按钮时,我应该转到另一个控制器,它应该自动缩放到上图所示的那个汽车图钉。 任何帮助,将不胜感激!

     [1]: http://i.stack.imgur.com/0Nddd.png

假设您有一个导航栏,首先创建一个从源到目标视图控制器的推送服务,不要重复使用同一VC,因为您将需要更多的逻辑,然后为其指定一个标识符,例如, expandedAnnotation 然后在当前的VC MyWorldViewController上创建一个“ selectedAnnotation”属性
您将需要使用MapKit的didSelectAnnotationView并找到您选择的注释(例如,在我的项目中,我的注释是艺术品(自定义类名)的示例)

func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) {
    if let annotation = view.annotation as? Artwork {
        selectedAnnotation = annotation
        performSegueWithIdentifier("expandedAnnotation", sender: self)
    }
}

然后,在您覆盖的prepareForSegue函数中,将注释传递到目标viewcontroller。 当然,首先要在目标视图控制器中为注释创建一个属性。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "expandedAnnotation") {
        let destinationVC = segue.destinationViewController as! DestinationViewController
        destinationVC.annotation = selectedAnnotation
    }

就是这样,在您的destinationVC viewDidLoad ,将注释添加到mapView并将其区域居中。 祝好运

将兴趣点的坐标传递到新的视图控制器,并在其地图视图中使用setRegion 代码可能看起来像这样:

var region = MKCoordinateRegion(center: myCoordinate, span: 200)
region = mapView.regionThatFits(region)
mapView.setRegion(region, animated: true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM