Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fun With MapKit!

Fun With MapKit!

Introduction to MapKit. Starting with three lines of code, build an app showing a map with annotations using the current location.

Presentation 1/11/2018 to CocoaCoders Austin.

Patrick Weigel

January 11, 2018
Tweet

More Decks by Patrick Weigel

Other Decks in Programming

Transcript

  1. Cocoa Coders 2018-01-11 SceneKit CocoaCoders Introductions 7:00 Show and Tell

    Presentation Informal Socialization 7:10 7:30 8:45
  2. Cocoa Coders 2018-01-11 SceneKit Fun With MapKit 1. Minimal Concepts

    2. Minimal Code 3. Notes on Latitude, Longitude 4. Audience Participation 5. Expanded Horizons https://speakerdeck.com/patrick462/mapkit-introduction-and-demo
  3. Minimal Demo M apKit Cocoa Coders 2018-01-11 SceneKit • Run

    to show goal • You’re Smart: • 6 Concepts • 3 Lines of Code
  4. Minimal Concepts M apKit Cocoa Coders 2018-01-11 SceneKit Nouns •

    Map View • Latitude, Longitude • Location • Span • Region Verbs • Connect
  5. Minimal Code M apKit Cocoa Coders 2018-01-11 SceneKit Concepts •

    Map View • Latitude,
 Longitude • Location • Span • Region Code • MKMapView • Austin is
 30.25, -97.75 • CLLocationCoordinate2D • MKCoordinateSpan • MKCoordinateRegion
  6. Minimal Code M apKit Cocoa Coders 2018-01-11 SceneKit @IBOutlet weak

    var mapViewAustin: MKMapView! let centerAustin = CLLocationCoordinate2D(latitude: 30.25, longitude: -97.75) let spanAustin = MKCoordinateSpan(latitudeDelta: 1.0, longitudeDelta: 1.0) mapViewAustin.region = MKCoordinateRegion(center: centerAustin, span: spanAustin)
  7. Minimal Demo M apKit Cocoa Coders 2018-01-11 SceneKit • New

    Project • Interface Builder • viewDidLoad • Run
  8. Cocoa Coders 2018-01-11 SceneKit Fun With MapKit 1. Minimal Concepts

    and Code 2. Live Coding Demo 3. Notes on Latitude, Longitude 4. Audience Participation 5. Expanded Horizons https://speakerdeck.com/patrick462/mapkit-introduction-and-demo
  9. Notes on Latitude, Longitude Latitude The equator is zero N

    is positive, S is negative Austin is about 30 Longitude Greenwich, England is zero E is positive, W is negative Austin is about -97 Cocoa Coders 2018-01-11 SceneKit M apKit CLLocationCoordinate2D takes decimal input minutes are one-sixtieth of a degree seconds are one-sixtieth of a minute MKCoordinateSpan takes degrees as input one degree of latitude is about 70 miles one degree of longitude is is 0 to 70 miles
  10. Notes on Latitude, Longitude use google. examples: latitude and longitude

    Austin latitude and longitude Austin texas central library: http://latitude.to/articles-by-country/us/united-states/159359/austin-public-library latitude and longitude mount rushmore Cocoa Coders 2018-01-11 SceneKit M apKit
  11. Expanded Horizons 1. Scroll, Zoom 2. Annotations 3. Current Location

    4. Multiple Maps M apKit Cocoa Coders 2018-01-11 SceneKit
  12. Annotations let irenesAnnotation: MKPointAnnotation = MKPointAnnotation() irenesAnnotation.coordinate = CLLocationCoordinate2D(latitude: 30.2772,

    longitude: -97.7503) irenesAnnotation.title = "Irene’s Bar" mapViewAustin.addAnnotation(irenesAnnotation) M apKit Cocoa Coders 2018-01-11 SceneKit
  13. Current Location (1/2) import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate {

    var locationManager: CLLocationManager! locationManager = CLLocationManager() locationManager.delegate = self locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.requestAlwaysAuthorization() if CLLocationManager.locationServicesEnabled() { print("location services enabled") locationManager.startUpdatingLocation() } M apKit Cocoa Coders 2018-01-11 SceneKit
  14. Current Location (2/2) M apKit Cocoa Coders 2018-01-11 SceneKit func

    locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { let myLocation: CLLocation = locations.first! let myAnnotation: MKPointAnnotation = MKPointAnnotation() myAnnotation.coordinate = CLLocationCoordinate2DMake(myLocation.coordinate.latitude, myLocation.coordinate.longitude) myAnnotation.title = "Here I Am!” mapViewAustin.addAnnotation(myAnnotation) }
  15. Cocoa Coders 2018-01-11 SceneKit Fun With MapKit 1. Minimal Concepts

    2. Minimal Code 3. Notes on Latitude, Longitude 4. Audience Participation 5. Expanded Horizons https://speakerdeck.com/patrick462/mapkit-introduction-and-demo
  16. Summary M apKit Cocoa Coders 2018-01-11 SceneKit Nouns • Map

    View • Latitude, Longitude • Location • Span • Region Verbs • Connect
  17. Cocoa Coders 2017-09-28 SceneKit Increases Retention Skeleton for Future Learning

    Code With Me! Trifecta on Third - 3rd and Nuecest - pizza and bourbon Irene’s - sandwiches. Booths, no tables? Kung Fu Saloon - games Concrete Cowboy - bar