[iPhoneアプリ開発]地図検索アプリを開発

iPhoneアプリ

iPhoneアプリ開発していきます。

今回作るアプリは、「地図検索アプリ」です。

地図検索アプリの完成図

 

動画

[iPhoneアプリ開発]地図検索アプリ

地図検索アプリで使用するUI部品

地図検索アプリで使用するUI部品は、2つあります。

MKMapView

地図を表示させるUIパーツです。

TextField

テキストを入力する欄を表示するUIパーツです。

入力した文字列を取得できます。

ソースコード全体

import UIKit
import MapKit

//UITextFieldDelegateを追加することにより、TextField機能を使うことを宣言する。

class ViewController: UIViewController, UITextFieldDelegate {

  @IBOutlet weak var inputText: UITextField!
  
  @IBOutlet weak var dispMap: MKMapView!
  
  
  var pinlist = Array<MKPointAnnotation>()
  //viewDidLoad()は初めて画面が表示されるタイミングで実行されるメソッドです。
  override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
   inputText.delegate = self
  }
  
  func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    
    if pinlist.count > 0{
      let lastpin = pinlist.removeLast()
      dispMap.removeAnnotation(lastpin)
    }
    
    textField.resignFirstResponder()
    
    //入力された値をsearchKeywordに格納する
    let searchKeyword = textField.text
    
    print(searchKeyword)
    
    //CLGeocoderインスタンスを生成
    let geocoder = CLGeocoder()
    
/*CLGeocoderクラスを使うと、緯度経度から住所を算出することができる。また、逆もできる。*/
    geocoder.geocodeAddressString(searchKeyword!, completionHandler: {(placemarks:[CLPlacemark]?, error:Error?) in
      
      if let placemark = placemarks?[0]{
        
        if let targetCoordinate = placemark.location?.coordinate{
          
          print(targetCoordinate)
          
          let pin = MKPointAnnotation()
          
          pin.coordinate = targetCoordinate
          
          pin.title = searchKeyword
          
          self.pinlist.append(pin)
          
          self.dispMap.addAnnotation(pin)
          
          //self.dispMap.region = MKCoordinateRegionMakeWithDistance(targetCoordinate, 500.0, 500.0)
          let span = MKCoordinateSpan(latitudeDelta: 0.02, longitudeDelta: 0.02)
          let theRegion = MKCoordinateRegion(center: targetCoordinate, span: span)
          
          self.dispMap.setRegion(theRegion, animated: true)
        }
      }
    })
    
    
    return true
  }
  
  
}

おすすめ教材

  1. 【6日で速習】iOS 11 Swift 4アプリ開発入門決定版 20個のアプリを作る(ARKit,CoreML,NFC)
  2. 【iOS12対応】未経験者が有名アプリ開発者になるiOS 12の全て 20個以上アプリをつくりプロになる
  3. iOS 11 & Swift 4 – The Complete iOS App Development Bootcamp

 

iPhoneアプリ作成&Swift本

0