🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1672閲覧

Google map Direction APIについて

takk_014

総合スコア53

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/03/22 05:47

編集2021/03/22 06:05

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のオンラインサービスなのでサーバ上にコードがあるのでしょうか??

マニアックな質問になりますが、知っていればご教授よろしくお願い致します。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このDirectionクラスは GoogleMaps ライブラリに定義されていると思う

GitHub - keisukeYamagishi/Direction

このパッケージを使っているなら、これなのでは?

Directionクラスのソースは
Direction/Direction at master · keisukeYamagishi/Direction · GitHub

投稿2021/03/22 06:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takk_014

2021/03/22 06:35

ご回答ありがとうございます。 仰る通りにDirection.swiftにcalculationメソッドが定義されていました。 calculationメソッドについて自分なりに分析して解らなければまた質問するかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問