address와 city, state, zipcode 를 입력받아 현재 위치에서 입력받은 주소위치까지 찾아가는 길을 보여주는 테스트 예제
1. main.storyboard 에 입력받을 텍스트필드와 실행할 버튼을 그리고 controller.swift 파일에 연동한다.
2. CoreLocation , Contacts, Mapkit 을 각각 import 한다.
3. 아래의 코드대로 구현한다.
import UIKit
import CoreLocation
import Contacts
import MapKit
class ViewController: UIViewController {
@IBOutlet weak var address: UITextField!
@IBOutlet weak var city: UITextField!
@IBOutlet weak var state: UITextField!
@IBOutlet weak var zip: UITextField!
var coords : CLLocationCoordinate2D?
@IBAction func getDirections(sender: AnyObject) {
let getCoder = CLGeocoder()
let addressString = "\(address.text) \(city.text) \(state.text) \(zip.text)"
getCoder.geocodeAddressString(addressString, completionHandler: {(placemarks : [CLPlacemark]? , error : NSError?) in
if error != nil {
print("Geocode failed with error : \(error!.localizedDescription)")
} else if placemarks!.count > 0 {
let placemark = placemarks![0]
let location = placemark.location
self.coords = location!.coordinate
self.showMap()
}
})
}
func showMap() {
let addressDict = [CNPostalAddressStreetKey : address.text!,
CNPostalAddressCityKey : city.text!,
CNPostalAddressStateKey : state.text!,
CNPostalAddressPostalCodeKey : zip.text!]
let place = MKPlacemark(coordinate: coords!, addressDictionary: addressDict)
let mapItem = MKMapItem(placemark: place)
let options = [MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving]
mapItem.openInMapsWithLaunchOptions(options)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
4. 테스트를 할때에 정확한 주소를 입력해야 하므로 폰에서 애플맵을 실행한 후 테스트할 장소의 위치를 적어논 후 앱을 실행하여 테스트 해 본다.
위의 코드는 "핵심만 골라 배우는 ios 9 프로그래밍 (닐스미스 지음/ 황반석 옮김)" 에 있는 예제를 참고하여 작성하였습니다.
'programming language > swift' 카테고리의 다른 글
ios photo extensions 사용하기 in swift (0) | 2016.09.11 |
---|---|
ios 위치정보 가져오기 in swift (0) | 2016.09.09 |
ios 상태보존 , 복원 사용하기 in swift (0) | 2016.09.07 |
ios 로컬알림 및 앱 background 사용 in swift (0) | 2016.09.07 |
ios iAd, google Admob 사용하기 in swift (0) | 2016.09.07 |