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 프로그래밍 (닐스미스 지음/ 황반석 옮김)" 에 있는 예제를 참고하여 작성하였습니다.

+ Recent posts