ios - Mapbox 中的 MKUserTrackingBarButtonItem

标签 ios swift swift2 mapkit mapbox

我正在评估从 MapKit 到 Mapbox 的转换。

除了 MKUserTrackingBarButtonItem 之外,我已经找到了所有功能的等效项。

let trackingButton = MKUserTrackingBarButtonItem(mapView: map)

有没有办法为 Mapbox iOS SDK 创建这个按钮?

我在 Mapbox 文档中没有找到任何类似的东西,我不能继续使用这个函数,因为它需要一个 MKMapView

提前致谢。

最佳答案

以防万一其他人有兴趣,这是this answer在一个简单的 ViewController 中转换为 Swift。我只是遗漏了 .FollowWithCourse 以复制 MKUserTrackingBarButtonItem 的行为。

class ViewController: UIViewController, MGLMapViewDelegate {

    @IBOutlet weak var map: MGLMapView!
    @IBOutlet weak var toolbar: UIToolbar!

    override func viewDidLoad() {
        super.viewDidLoad()

        map.delegate = self

        map.setCenterCoordinate(CLLocationCoordinate2D(latitude: 40.7326808, longitude: -73.9843407), zoomLevel: 12, animated: false)

        let trackingButton = UIBarButtonItem(image: UIImage(named: "TrackingLocationOffMask"), style: UIBarButtonItemStyle.Plain, target: self, action: "trackingButtonChanged")
        toolbar.items!.insert(trackingButton, atIndex: 0)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func mapView(mapView: MGLMapView, didChangeUserTrackingMode mode: MGLUserTrackingMode, animated: Bool) {
        var image: String = "TrackingLocationOffMask.png"

        switch (mode) {
        case .Follow:
            image = "TrackingLocationMask.png"
            break
        case .FollowWithHeading:
            image = "TrackingHeadingMask.png"
            break
        default:
            break
        }

        UIView.animateWithDuration(0.25, animations: {
            (self.toolbar.items![0] as UIBarButtonItem).image = UIImage(named: image)
        })
    }

    func trackingButtonChanged() {
        var mode: MGLUserTrackingMode = .Follow

        switch (map.userTrackingMode) {
        case .Follow:
            mode = .FollowWithHeading
            break
        case .FollowWithHeading:
            mode = .None
            break
        default:
            break
        }

        map.userTrackingMode = mode
    }
}

图像是here在 GitHub 上的 mapbox-gl-native。

关于ios - Mapbox 中的 MKUserTrackingBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717633/

相关文章:

ios - 将图像裁剪成叠加层的形状 - iOS

ios - 将 UILabel 位置更改为 CGPath 的 strokeEnd

ios - 如果用户当前的 FCM token 不再有效,我该如何更新用户的 FCM token ?

ios - 如何知道标签是否被点击

ios - 用户对协议(protocol) PFSubclassing 的冗余一致性(Swift 2.0)

ios - 恢复应用内购买 Swift

ios - Swift 中的可选闭包属性

swift - 我需要一个 UIButton 飞入屏幕

ios - 无法引用类中的下拉菜单值

swift2 - 我们如何在没有任何用户输入的情况下从文本文件或服务器连续读取数据