萬一別人有興趣,這裏是這個this answer翻譯Swift在簡單的ViewController
。我只是遺漏了.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-本地。
謝謝,這將工作。儘管它與MapKit中的一行相比有很多代碼。你知道是否有計劃在SDK中添加一個等價物? – dersvenhesse
是的,這是[我們將添加](https://github.com/mapbox/mapbox-gl-native/issues/1093)。 – friedbunny