movable type data api連携!店舗情報を地図に表示させよう!

23
Movable Type Data API連携! 店舗情報を地図に表⽰させよう! 【Swift&Movable Typeコラボ!】 Swiftビギナーズ勉強会 第20回 at ⽇本マイクロソフト株式会社

Upload: kanako-kobayashi

Post on 17-Jan-2017

108 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Movable Type Data API連携!店舗情報を地図に表示させよう!

Movable Type Data API連携! 店舗情報を地図に表⽰させよう!

【Swift&Movable Typeコラボ!】

Swiftビギナーズ勉強会

第20回 at ⽇本マイクロソフト株式会社

Page 2: Movable Type Data API連携!店舗情報を地図に表示させよう!

Self-Intoroduction

エンジニア(Rails/Swift/AWS/Linux)

アウトプットを主軸においた、勉強会を運営しています:)

Click

Page 3: Movable Type Data API連携!店舗情報を地図に表示させよう!

Engineer@Life is Tech !

Page 4: Movable Type Data API連携!店舗情報を地図に表示させよう!

全国書店販売中!

~Swiftではじめるプログラミングの第⼀歩~

これからつくるiPhoneアプリ開発⼊⾨ [ Swift3 &Xcode8対応 ]

Swiftビギナーズ倶楽部から⽣まれた!

https://swiftbg.github.io/swiftbook/書籍公式サイト

執筆しました🤗

サンプルアプリ Tips公開

Page 5: Movable Type Data API連携!店舗情報を地図に表示させよう!

1/21(⼟)・22(⽇)ハンズオンセミナー開催🔰

講師は「これからつくるiPhoneアプリ開発⼊⾨」の

著者陣と、iOSアプリ開発のエキスパートが担当します。

⼀緒にモノづくりの楽しさを体験しましょう😊

Page 6: Movable Type Data API連携!店舗情報を地図に表示させよう!

参加者にはブックレビュープレゼント🎁

執筆陣が、楽しみながらプログラミングを勉強したり アプリ開発を継続して学ぶ⽅法をお話しします😊

Page 7: Movable Type Data API連携!店舗情報を地図に表示させよう!

APIの情報を検索📱

Sample App

TableViewに⼀覧表⽰

現在位置と店舗までの 距離を表⽰

👈

👈

Page 8: Movable Type Data API連携!店舗情報を地図に表示させよう!

画⾯遷移 地図を表⽰ 地図にピンを⽴てる 店舗情報を表⽰

Sample App

👈

Page 9: Movable Type Data API連携!店舗情報を地図に表示させよう!

DEMO

Page 10: Movable Type Data API連携!店舗情報を地図に表示させよう!

1)MTのカスタムフィールドに位置情報を追加

2)現在位置からの距離を計算

3)位置情報から地図にピンを⽴てる!

Today's Agenda

Page 11: Movable Type Data API連携!店舗情報を地図に表示させよう!

1)MTのカスタムフィールドに位置情報を追加

カスタムフィールドとは⁉

Movable Typeで ⼊⼒項⺫を

追加できる機能

Page 12: Movable Type Data API連携!店舗情報を地図に表示させよう!

Movable Typeの記事作成画⾯のデフォルト⼊⼒項⺫

タイトル 本⽂ 概要

キーワード タグ

1)MTのカスタムフィールドに位置情報を追加

Page 13: Movable Type Data API連携!店舗情報を地図に表示させよう!

位置情報を⼊⼒する欄を追加

1)MTのカスタムフィールドに位置情報を追加

Page 14: Movable Type Data API連携!店舗情報を地図に表示させよう!

Data APIにアクセス

// URLオブジェクトの⽣成 var URL = Foundation.URL(string: "http://\(mtHost)/\(mtPath)/mt-data-api.cgi/v3/search?search=\(keyword_encode!)") ・・・省略 // リンクオブジェクトの⽣成 let req = URLRequest(url: URL!) // セッション情報を取り出し let session = URLSession(configuration: configuration, delegate: nil, delegateQueue: OperationQueue.main) // リクエストをタスクとして登録 let task = session.dataTask(with: req, completionHandler: { (data , request , error) in   ・・・・取得した店舗情報をセットする処理 }) // ダウンロード開始 task.resume()

エンドポイントを指定

Page 15: Movable Type Data API連携!店舗情報を地図に表示させよう!

2)現在位置からの距離を計算

// 現在位置情報 let now_point: CLLocation = CLLocation(latitude: now_latitude, longitude: now_longitude) // ⾏き先位置情報 let go_point: CLLocation = CLLocation(latitude: go_latitude, longitude: go_longitude) // 現在地から⾏き先までの距離 distance = go_point.distance(from: now_point)

CLLocationクラスを利⽤して 現在位置と⾏き先の距離を計算

🔰注意するポイント:緯度経度情報はDouble型で           取り扱う必要があります。

Page 16: Movable Type Data API連携!店舗情報を地図に表示させよう!

マップを扱うには・・・

import MapKit

MapKitフレームワークを利⽤して マップを表⽰

Page 17: Movable Type Data API連携!店舗情報を地図に表示させよう!

3)位置情報からマップにピンを⽴てる!

// 位置情報や電⼦コンパスの機能を使いたい場合は   CLLocationManagerクラスを使⽤ let locationManager = CLLocationManager() // 位置情報は、CLLocationDegrees型で保持 // 緯度 var latitude: CLLocationDegrees = 0 // 経度 var longitude: CLLocationDegrees = 0

Page 18: Movable Type Data API連携!店舗情報を地図に表示させよう!

// 位置情報を設定 let coordinate = CLLocationCoordinate2DMake(latitude, longitude) // 表⽰領域を設定 let span = MKCoordinateSpanMake(0.005, 0.005) let region = MKCoordinateRegionMake(coordinate, span) // ピンを利⽤するには、MKPointAnnotation let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2DMake(latitude, longitude) // 店舗情報をセット annotation.title = shop_info // ピンを⽴てる self.dispMap.setRegion(region, animated:true) self.dispMap.addAnnotation(annotation)

CLLocationCoordinate2DMakeクラスを利⽤してピンを⽴てる

3)位置情報からマップにピンを⽴てる!

📱iOS9以降は、⾃由に⾊を変更可能

Page 19: Movable Type Data API連携!店舗情報を地図に表示させよう!

// Cellが選択された際に呼び出されるdelegateメソッド func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { // 地図に渡す値を取得 map_latitude = Double(recipeList[indexPath.row].shop_latitude)! map_longitude = Double(recipeList[indexPath.row].shop_longtude)! shop_info = recipeList[indexPath.row].name // 地図に画⾯遷移 performSegue(withIdentifier: "goMap", sender: nil) } // 地図に渡す値をセットするメソッド override func prepare(for segue: UIStoryboardSegue, sender: Any?) { let MapViewController:MapViewController = segue.destination as! MapViewController MapViewController.latitude = map_latitude MapViewController.longitude = map_longitude MapViewController.shop_info = shop_info }

検索画⾯から、地図に情報を引き渡す

3)位置情報からマップにピンを⽴てる!

Page 20: Movable Type Data API連携!店舗情報を地図に表示させよう!

全国書店販売中!

~Swiftではじめるプログラミングの第⼀歩~

これからつくるiPhoneアプリ開発⼊⾨ [ Swift3 &Xcode8対応 ]

この本の機能を組み合わせてます😆

https://swiftbg.github.io/swiftbook/書籍公式サイト

サンプルアプリ Tips公開

Page 21: Movable Type Data API連携!店舗情報を地図に表示させよう!

補 ⾜

SwiftyJSON

Alamofire-SwiftyJSON

json-swift

Argohttps://github.com/thoughtbot/Argo

https://github.com/owensd/json-swift

https://github.com/SwiftyJSON/Alamofire-SwiftyJSON

https://github.com/SwiftyJSON/SwiftyJSON★13,053

★971

★743

★2,854

JSONを扱いやすくしてくれるライブラリ

Page 22: Movable Type Data API連携!店舗情報を地図に表示させよう!

https://github.com/mustacheyork/MTSearchSwift

本⽇のサンプルコードはこちら

Page 23: Movable Type Data API連携!店舗情報を地図に表示させよう!

Let's study together!

Thank you :)