【问题标题】:How to set Mapkit user tracking button state如何设置 Mapkit 用户跟踪按钮状态
【发布时间】:2017-08-02 19:27:53
【问题描述】:

我创建了一个地图,右上角有一个用户跟踪按钮。我想知道如何在加载时将状态默认设置为“followWithHeadlights”,以便它像在 GPS 上一样跟随用户当前位置?

当前加载行为: Button current behaviour

加载时所需的行为: Button desired behaviour

代码 sn-p:

func setUserTrackingButton() {

    // Mapkit tracking button
    let trackingButton: MKUserTrackingBarButtonItem = MKUserTrackingBarButtonItem.init(mapView: mapView)
    trackingButton.customView?.tintColor = UIColor(red:0.01, green:0.81, blue:0.37, alpha:1.0)
    trackingButton.customView?.frame.size = CGSize(width: 50, height: 50)

    let toolBarFrame = CGRect(origin: CGPoint(x: 0, y: 0) , size: CGSize(width: 50, height: 50))
    let toolbar = UIToolbar.init(frame: toolBarFrame)
    toolbar.barTintColor = UIColor.white
    toolbar.isTranslucent = true
    let flex: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
    toolbar.items = [flex, trackingButton, flex]

    let origin = CGPoint(x: self.view.frame.size.width - 85, y: 60)
    let roundedSquare: UIView = UIView(frame: CGRect(origin: origin, size: CGSize(width: 50, height: 50)))
    roundedSquare.backgroundColor = UIColor.white
    roundedSquare.layer.cornerRadius = 5
    roundedSquare.layer.masksToBounds = true

    roundedSquare.addSubview(toolbar)
    mapView.addSubview(roundedSquare)
}

ViewDidLoad 包括:

mapView.setUserTrackingMode(MKUserTrackingMode.followWithHeading, animated: true)

谢谢!

【问题讨论】:

    标签: swift mapkit userlocation mkuserlocation showuserlocation


    【解决方案1】:

    必须在地图视图完全加载后设置用户跟踪模式。在viewDidLoad 中并非如此。

    您可以使用MKMapViewDelegate 方法mapViewDidFinishLoading(mapView:) 知道地图何时加载:

    class MyMapViewController: UIViewController, MKMapViewDelegate {
    
        // ...
    
        override func viewDidLoad() {        
            super.viewDidLoad()
    
            // ...
            mapView.delegate = self
        }
    
        // ...
    
        func mapViewDidFinishLoadingMap(_ mapView: MKMapView) {
            mapView.setUserTrackingMode(.followWithHeading, animated: true)
        }
    
        // ...
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      相关资源
      最近更新 更多