summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2016-08-02 15:29:50 -0700
committerGitHub <noreply@github.com>2016-08-02 15:29:50 -0700
commit2d65cddda59fd0c01eaca8eebe3c57ed9d8b87c4 (patch)
tree4200176a1a1f4254a08e58d497a5aba4a413a7d8
parent10b2cc60a7b274f71b46976b1e9e89031b9e44ca (diff)
downloadqtlocation-mapboxgl-2d65cddda59fd0c01eaca8eebe3c57ed9d8b87c4.tar.gz
[ios] Migrated playground to Swift 3 (#5847)
Fixes #5846.
-rw-r--r--platform/ios/Mapbox.playground/Contents.swift115
1 files changed, 101 insertions, 14 deletions
diff --git a/platform/ios/Mapbox.playground/Contents.swift b/platform/ios/Mapbox.playground/Contents.swift
index b1b11e5e34..1f368be73b 100644
--- a/platform/ios/Mapbox.playground/Contents.swift
+++ b/platform/ios/Mapbox.playground/Contents.swift
@@ -1,5 +1,9 @@
import UIKit
-import XCPlayground
+#if swift(>=3)
+ import PlaygroundSupport
+#else
+ import XCPlayground
+#endif
import Mapbox
let width: CGFloat = 700
@@ -9,7 +13,11 @@ class Responder: NSObject {
var mapView: MGLMapView?
func togglePitch(sender: UISwitch) {
let camera = mapView!.camera
- camera.pitch = sender.on ? 60 : 0
+ #if swift(>=3)
+ camera.pitch = sender.isOn ? 60 : 0
+ #else
+ camera.pitch = sender.on ? 60 : 0
+ #endif
mapView!.setCamera(camera, animated: false)
}
}
@@ -18,7 +26,11 @@ class Responder: NSObject {
let panelWidth: CGFloat = 200
let panel = UIView(frame: CGRect(x: width - panelWidth, y: 0, width: 200, height: 100))
panel.alpha = 0.8
-panel.backgroundColor = UIColor.whiteColor()
+#if swift(>=3)
+ panel.backgroundColor = .white
+#else
+ panel.backgroundColor = UIColor.whiteColor()
+#endif
// Delete markers
let deleteSwitchLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
@@ -41,7 +53,11 @@ let pitchLabel = UILabel(frame: CGRect(x: 0, y: 60, width: 100, height: 30))
pitchLabel.text = "Pitch"
let pitchSwitch = UISwitch(frame: CGRect(x: panelWidth-panelWidth / 2.0, y: 60, width: 100, height: 50))
let responder = Responder()
-pitchSwitch.addTarget(responder, action: #selector(responder.togglePitch(_:)), forControlEvents: .ValueChanged)
+#if swift(>=3)
+ pitchSwitch.addTarget(responder, action: #selector(responder.togglePitch(sender:)), for: .valueChanged)
+#else
+ pitchSwitch.addTarget(responder, action: #selector(responder.togglePitch(_:)), forControlEvents: .ValueChanged)
+#endif
panel.addSubview(pitchLabel)
panel.addSubview(pitchSwitch)
@@ -56,7 +72,11 @@ MGLAccountManager.setAccessToken(accessToken)
class PlaygroundAnnotationView: MGLAnnotationView {
override func prepareForReuse() {
- hidden = hideMarkerSwitchView.on
+ #if swift(>=3)
+ isHidden = hideMarkerSwitchView.isOn
+ #else
+ hidden = hideMarkerSwitchView.on
+ #endif
}
}
@@ -67,6 +87,29 @@ class MapDelegate: NSObject, MGLMapViewDelegate {
var annotationViewByAnnotation = [MGLPointAnnotation: PlaygroundAnnotationView]()
+ #if swift(>=3)
+ func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? {
+
+ var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "annotation") as? PlaygroundAnnotationView
+
+ if (annotationView == nil) {
+ let av = PlaygroundAnnotationView(reuseIdentifier: "annotation")
+ av.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
+ av.centerOffset = CGVector(dx: -15, dy: -15)
+ let centerView = UIView(frame: av.bounds.insetBy(dx: 3, dy: 3))
+ centerView.backgroundColor = .white
+ av.addSubview(centerView)
+ av.backgroundColor = .purple
+ annotationView = av
+ } else {
+ annotationView!.subviews.first?.backgroundColor = .green
+ }
+
+ annotationViewByAnnotation[annotation as! MGLPointAnnotation] = annotationView
+
+ return annotationView
+ }
+ #else
func mapView(mapView: MGLMapView, viewForAnnotation annotation: MGLAnnotation) -> MGLAnnotationView? {
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier("annotation") as? PlaygroundAnnotationView
@@ -83,12 +126,40 @@ class MapDelegate: NSObject, MGLMapViewDelegate {
} else {
annotationView!.subviews.first?.backgroundColor = UIColor.greenColor()
}
-
+
annotationViewByAnnotation[annotation as! MGLPointAnnotation] = annotationView
return annotationView
}
+ #endif
+ #if swift(>=3)
+ func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
+ let pointAnnotation = annotation as! MGLPointAnnotation
+ let annotationView: PlaygroundAnnotationView = annotationViewByAnnotation[pointAnnotation]!
+
+ for view in annotationViewByAnnotation.values {
+ view.layer.zPosition = -1
+ }
+
+ annotationView.layer.zPosition = 1
+
+ UIView.animate(withDuration: 1.25, delay: 0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.6, options: .curveEaseOut, animations: {
+ annotationView.transform = CGAffineTransform(scaleX: 1.8, y: 1.8)
+ }) { _ in
+ annotationView.transform = CGAffineTransform(scaleX: 1, y: 1)
+
+ if deleteMarkerSwitchView.isOn {
+ mapView.removeAnnotation(pointAnnotation)
+ return
+ }
+
+ if hideMarkerSwitchView.isOn {
+ annotationView.isHidden = true
+ }
+ }
+ }
+ #else
func mapView(mapView: MGLMapView, didSelectAnnotation annotation: MGLAnnotation) {
let pointAnnotation = annotation as! MGLPointAnnotation
let annotationView: PlaygroundAnnotationView = annotationViewByAnnotation[pointAnnotation]!
@@ -114,15 +185,25 @@ class MapDelegate: NSObject, MGLMapViewDelegate {
}
}
}
+ #endif
func handleTap(press: UILongPressGestureRecognizer) {
let mapView: MGLMapView = press.view as! MGLMapView
- if (press.state == .Recognized) {
- let coordiante: CLLocationCoordinate2D = mapView.convertPoint(press.locationInView(mapView), toCoordinateFromView: mapView)
+ #if swift(>=3)
+ let isRecognized = press.state == .recognized
+ #else
+ let isRecognized = press.state == .Recognized
+ #endif
+ if (isRecognized) {
+ #if swift(>=3)
+ let coordinate: CLLocationCoordinate2D = mapView.convert(press.location(in: mapView), toCoordinateFrom: mapView)
+ #else
+ let coordinate: CLLocationCoordinate2D = mapView.convertPoint(press.locationInView(mapView), toCoordinateFromView: mapView)
+ #endif
let annotation = MGLPointAnnotation()
annotation.title = "Dropped Marker"
- annotation.coordinate = coordiante
+ annotation.coordinate = coordinate
mapView.addAnnotation(annotation)
mapView.showAnnotations([annotation], animated: true)
}
@@ -132,14 +213,16 @@ class MapDelegate: NSObject, MGLMapViewDelegate {
//: Create a map and its delegate
-let lat: CLLocationDegrees = 37.174057
-let lng: CLLocationDegrees = -104.490984
-let centerCoordinate = CLLocationCoordinate2D(latitude: lat, longitude: lng)
+let centerCoordinate = CLLocationCoordinate2D(latitude: 37.174057, longitude: -104.490984)
let mapView = MGLMapView(frame: CGRect(x: 0, y: 0, width: width, height: height))
mapView.frame = CGRect(x: 0, y: 0, width: width, height: height)
-XCPlaygroundPage.currentPage.liveView = mapView
+#if swift(>=3)
+ PlaygroundPage.current.liveView = mapView
+#else
+ XCPlaygroundPage.currentPage.liveView = mapView
+#endif
let mapDelegate = MapDelegate()
mapView.delegate = mapDelegate
@@ -150,7 +233,11 @@ mapView.addGestureRecognizer(tapGesture)
//: Zoom in to a location
-mapView.setCenterCoordinate(centerCoordinate, zoomLevel: 12, animated: false)
+#if swift(>=3)
+ mapView.setCenter(centerCoordinate, zoomLevel: 12, animated: false)
+#else
+ mapView.setCenterCoordinate(centerCoordinate, zoomLevel: 12, animated: false)
+#endif
//: Add control panel