MapKit 16 Reverse geocoding

Swift3.0 // // ViewController.swift // MapKit016 // // Created by Misato Morino on 2016/08/15. // Copyright © 2016年 Misato Morino. All rights reserved. // import UIKit import MapKit class ViewController: UIViewController, MKMapViewDelegate { var mapView: MKMapView! var myPin: MKPointAnnotation! let myLat: CLLocationDegrees = 37.331741 let myLon: CLLocationDegrees = -122.030333 override func viewDidLoad() { super.viewDidLoad() // UIButtonを作成する. let myButton: UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 300, height: 50)) myButton.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height-100) myButton.layer.masksToBounds = true myButton.layer.cornerRadius = 20.0 myButton.setTitle("ReverseGeoCoding", for: .normal) myButton.backgroundColor = UIColor.red myButton.setTitleColor(UIColor.white, for: .normal) myButton.addTarget(self, action: #selector(ViewController.onClickMyButton(sender:)), for: .touchUpInside) let center: CLLocationCoordinate2D = CLLocationCoordinate2DMake(myLat, myLon) // MapViewを生成. mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)) // MapViewの中心位置を指定. mapView.centerCoordinate = center // mapViewにdelegateを指定. mapView.delegate = self // 縮尺を変更. // 倍率を指定. let span : MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) // MapViewで指定した中心位置とMKCoordinateSapnで宣言したspanを指定する. let region : MKCoordinateRegion = MKCoordinateRegion(center: center, span: span) // MapViewのregionプロパティにregionを指定. mapView.region = region // MapViewをviewに追加. self.view.addSubview(mapView) // UIButtonをviewに追加. self.view.addSubview(myButton) // pinアノテーションを作成. myPin = MKPointAnnotation() myPin.coordinate = center myPin.title = "Country" myPin.subtitle = "Name" // アノテーションをmaoViewに追加. mapView.addAnnotation(myPin) } /* ボタンが押されたら呼ばれるメソッド */ func onClickMyButton(sender: UIButton) { // geocoderを作成. let myGeocorder = CLGeocoder() // locationを作成. let myLocation = CLLocation(latitude: myLat, longitude: myLon) // 逆ジオコーディング開始. myGeocorder.reverseGeocodeLocation(myLocation, completionHandler: { (placemarks, error) -> Void in for placemark in placemarks! { print("Name: \(placemark.name)") print("Country: \(placemark.country)") print("ISOcountryCode: \(placemark.isoCountryCode)") print("administrativeArea: \(placemark.administrativeArea)") print("subAdministrativeArea: \(placemark.subAdministrativeArea)") print("Locality: \(placemark.locality)") print("PostalCode: \(placemark.postalCode)") print("areaOfInterest: \(placemark.areasOfInterest)") print("Ocean: \(placemark.ocean)") // pinのタイトルとサブタイトルを変更する. self.myPin.title = "\(placemark.country)" self.myPin.subtitle = "\(placemark.name)" } }) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } Swift 2.3 // // ViewController.swift // MapKit016 // // Created by Misato Morino on 2016/08/15. // Copyright © 2016年 Misato Morino. All rights reserved. // import UIKit import MapKit class ViewController: UIViewController, MKMapViewDelegate { var mapView: MKMapView! var myPin: MKPointAnnotation! let myLat: CLLocationDegrees = 37.331741 let myLon: CLLocationDegrees = -122.030333 override func viewDidLoad() { super.viewDidLoad() // UIButtonを作成する. let myButton: UIButton = UIButton(frame: CGRectMake(0, 0, 300, 50)) myButton.layer.position = CGPointMake(self.view.frame.width/2, self.view.frame.height-100) myButton.layer.masksToBounds = true myButton.layer.cornerRadius = 20.0 myButton.setTitle("ReverseGeoCoding", forState: .Normal) myButton.backgroundColor = UIColor.redColor() myButton.setTitleColor(UIColor.whiteColor(), forState: .Normal) myButton.addTarget(self, action: #selector(ViewController.onClickMyButton(_:)), forControlEvents: .TouchUpInside) let center: CLLocationCoordinate2D = CLLocationCoordinate2DMake(myLat, myLon) // MapViewを生成. mapView = MKMapView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)) // MapViewの中心位置を指定. mapView.centerCoordinate = center // mapViewにdelegateを指定. mapView.delegate = self // 縮尺を変更. // 倍率を指定. let span : MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1) // MapViewで指定した中心位置とMKCoordinateSapnで宣言したspanを指定する. let region : MKCoordinateRegion = MKCoordinateRegion(center: center, span: span) // MapViewのregionプロパティにregionを指定. mapView.region = region // MapViewをviewに追加. self.view.addSubview(mapView) // UIButtonをviewに追加. self.view.addSubview(myButton) // pinアノテーションを作成. myPin = MKPointAnnotation() myPin.coordinate = center myPin.title = "Country" myPin.subtitle = "Name" // アノテーションをmaoViewに追加. mapView.addAnnotation(myPin) } /* ボタンが押されたら呼ばれるメソッド */ func onClickMyButton(sender: UIButton) { // geocoderを作成. let myGeocorder = CLGeocoder() // locationを作成. let myLocation = CLLocation(latitude: myLat, longitude: myLon) // 逆ジオコーディング開始. myGeocorder.reverseGeocodeLocation(myLocation, completionHandler: { (placemarks, error) -> Void in for placemark in placemarks! { print("Name: \(placemark.name)") print("Country: \(placemark.country)") print("ISOcountryCode: \(placemark.ISOcountryCode)") print("administrativeArea: \(placemark.administrativeArea)") print("subAdministrativeArea: \(placemark.subAdministrativeArea)") print("Locality: \(placemark.locality)") print("PostalCode: \(placemark.postalCode)") print("areaOfInterest: \(placemark.areasOfInterest)") print("Ocean: \(placemark.ocean)") // pinのタイトルとサブタイトルを変更する. self.myPin.title = "\(placemark.country)" self.myPin.subtitle = "\(placemark.name)" } }) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 2.3と3.0の差分 setCenterCoordinate から setCenter に変更

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.