Google map Direction APIを使ってA地点からB地点への移動経路を曜日ごとに切り替えるアプリを作りたいです。
現在は画像のように複数の移動経路をマップ上に表示させることができています。
この複数ある経路の中から曜日ごとに切り替えて一つの経路を表示したいです。
↓参考にしたサイトはこちらです↓
Google map SDK for iOS で経路検索
肝心なViewControllerのソースはこちら(その他諸々なソースはサイトから取得できます)
swift
1// 2// ViewController.swift 3// Direction 4// 5// Created by Shichimitoucarashi on 2017/12/15. 6// Copyright © 2017年 keisuke yamagishi. All rights reserved. 7// 8 9import UIKit 10import GoogleMaps 11 12class ViewController: UIViewController, GMSMapViewDelegate { 13 14 var mapView: GMSMapView! 15 var coordinates: [CLLocationCoordinate2D] = [] 16 var direction: Direction! 17 18 override func loadView() { 19 super.loadView() 20 navigationController?.isNavigationBarHidden = true 21 //表示する位置 22 let camera = GMSCameraPosition.camera(withLatitude: 34.964298, 23 longitude: 138.406921, 24 zoom: 13.0) 25 //マップのインスタンスをここで入れてる 26 self.mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 27 self.mapView.isMyLocationEnabled = true 28 self.mapView.delegate = self 29 view = self.mapView 30 //引数(経路検索開始位置と経路検索終了位置)を与えてDirectionクラスからインスタンスを生成 31 let direction = Direction(from: "34.964298,138.4069219", 32 to: "34.971698,138.3890637", 33 alternative: true) 34 //赤ピンの現在位置 35 let fromMarker = CLLocationCoordinate2D(latitude: 34.964298, longitude: 138.4069219) 36 //赤ピンの目的位置 37 let toMarker = CLLocationCoordinate2D(latitude: 34.971698, longitude: 138.3890637) 38 coordinates.append(fromMarker) 39 coordinates.append(toMarker) 40 self.directionMarker(location: fromMarker) 41 self.directionMarker(location: toMarker) 42 //ここで経路の検索をしてる、検索結果はroutesに入る 43 direction.calculation(completion: { [unowned self] route in 44 guard let routes = route.routes as? [Routes] else { 45 return 46 } 47 //ここで経路をマップのViewに追加して表示させてる 48 self.mapView.addDirection(routes: routes, color: .red) 49 print("------------------------- routes -----------------------------") 50 print(routes) 51 }, failuer: { error in 52 print(error) 53 }) 54 } 55 56 //タップしたところに赤ピンを移動させるデリゲート関数 57 /* 58 func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { 59 60 if coordinates.count >= 2 { 61 coordinates.removeAll() 62 self.mapView.clear() 63 } 64 65 directionMarker(location: coordinate) 66 coordinates.append(coordinate) 67 68 if coordinates.count == 2 { 69 70 self.direction = Direction(from: coordinates[0], to: coordinates[1], alternative: true, mode: .transit) 71 72 direction.calculation(completion: {[unowned self] route in 73 guard let routes = route.routes as? [Routes] else { 74 return 75 } 76 self.mapView.addDirection(routes: routes) 77 }, failuer: { error in 78 print(error) 79 }) 80 } 81 } 82 */ 83 84 func directionMarker (location: CLLocationCoordinate2D) { 85 let marker = GMSMarker() 86 marker.position = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude) 87 marker.title = "start Direction" 88 marker.snippet = "Hi! What's up!" 89 marker.map = mapView 90 } 91}
検索結果が入るであろうroutesの中身を見てみるとここに載せ切れないほどの大量の英数字が入っていました。
そこで検索結果の方をいじるのではなく検索方法をいじろうと思いました。
検索には Direction クラスの calculation というメソッドを使っています。
この**Directionクラスは GoogleMaps ライブラリに定義されていると思うのでPodsフォルダの中のGoogleMapsフォルダの中を見てみたのですがDirection**クラスが定義されてるファイルが見つかりません...
もしかして経路検索はGoogleのオンラインサービスなのでサーバ上にコードがあるのでしょうか??
マニアックな質問になりますが、知っていればご教授よろしくお願い致します。。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/22 06:35