見出し画像

Google MAP APIを有効化する手順(地図活用の効率化を目指す)

 地図活用を半自動的で行い、特定条件に合う場所を効率的に探したい、一覧化したい。そんな思いを実現したく模索中です。
 今回は、Google MAPをプログラム言語から利用できるようにするために、Google MAP APIを有効化した時の手順。
※2022年10月10日時点の内容であり、変更される可能性があります。

【前提条件】
1. この手順を実現するためには、Google Cloud Platform (以下、GCP)を利用できる状態である必要があります。GCPを始める方法は、今では多くの方が執筆しており、書籍もあるので、この記事では割愛します。
2. APIとは何か、どのように使えるのか、を知っている必要があります。

【やること概要】
1. GCPにてGoogle Maps PlatformのAPIを有効にする
2. Google Maps Platform APIを利用する際に使うAPIキーを生成する
3. Google Maps Platform APIのセキュリティ設定を行う
4. APIが有効に機能するか、試してみる

【実行手順】
1. GCPにてGoogle Maps PlatformのAPIを有効にする
 GCPのコンソールを開く。左上のメニューボタン(三のようなアイコン)をクリック。「Google Maps Platform」をクリックするとメニューが展開されるので「API」をクリック。APIの有効化自体は無料で行うことが可能です。

1. GCPメニュー → Google Maps Platform → API

2. Google Maps Platform APIを利用する際に使うAPIキーを生成する
 APIの有効化と、APIキーの生成は同じ画面で行うことになります。
 この画面中央に、APIキーとなる文字列が表示されているので、それをコピーしておく。
 「このプロジェクトで全てのGoogle Maps APIを有効にします」にレ点を入れて、「GOOGLE MAPS PLATFORMに移動」をクリック。

ここに、自分のAPIキーとなる文字列が表示されているのでコピーしておく。他人に見せないこと
2. APIキーを控える → GOOGLE MAPS PLATFORMに移動

3. Google Maps Platform APIのセキュリティ設定を行う
 2.にてAPIの有効化自体は無料で行えると書きましたが、APIの利用度合いによっては課金対象となります(一定数まで無料、閾値を超えると課金対象となる。ただし、知らずに課金される仕組みではない)
 そのため、自分のGoogle Maps Platform APIへのアクセスは自分だけに制限すべきです。かつ、利用範囲を限定すべきです。そのセキュリティ設定を行います。
 執筆時点で、APIキーを保護する方法は2つあります。
  1) APIキーの使用を特定のアプリケーションに制限する
  2) APIキーの使用を1つ以上の特定のAPIに制限する
 今回は、2の特定のAPIに制限しました。

プルダウンをクリックし、次画像のような選択を行う
今回はGoogle Mapで経路検索を行う機能を有効化しました
キーを制限 → APIキーが正常に制限されました、のメッセージで完了
Google Maps Platform APIの利用準備が完了

4. APIが有効に機能するか、試してみる
 今回の例では、Google Mapにある機能、経路検索の機能を有効化しました。これが機能するか試してみます。
 試すと言っても、何らかのプログラミング言語を使う必要はありません。下記URLをWEBブラウザのURL欄に入力するだけです。

https://maps.googleapis.com/maps/api/directions/outputFormat?parameters

 〜directionsまでは共通ですが、outputFormat以降の部分は何を実行するかによって、入力する文字列は変わります。上記はあくまで入力形式。詳細を理解するにはGoogle Maps Platformのドキュメントを読みます。
 今回は準備なので詳細を割愛します。
 json形式でGoogle Mapの結果を取得、東京駅から大手町駅までの距離と所要時間を求める時の例は次の通り。ここで、2項で得た自分のAPIキーを使います。

https://maps.googleapis.com/maps/api/directions/json?origin=東京駅&destination=大手町駅&key=2項で得た自分のAPIキー

 上記をWEBブラウザに入力すると、次のような結果が得られました。今回は、雰囲気だけ伝われば良いので大半を省略してます。
 自分で入力したのは東京駅、大手町駅だけでしたが自動的に住所に変換されて結果が得られました。また、距離は0.1[km]、所要時間は1分であることが分かります。
 これがそれぞれ、"legs"という括りの中の"distance"に距離が単位[km]で得られ、"duration"に所要時間が単位[分]で得られていることが分かりました。後々、この"legs"の中の"distance"と"duration"に知りたい情報がある、ことが大切になるので理解します。

{
   "geocoded_waypoints" : [
      {
         "geocoder_status" : "OK",

〜省略〜
   "routes" : [
      {
〜省略〜
         "copyrights" : "Map data ©2022 Google",
         "legs" : [
            {
               "distance" : {
                  "text" : "0.1 km",
               },
               "duration" : {
                  "text" : "1分",
               },
               "end_address" : "日本、〒100-0004 東京都千代田区大手町2丁目1−1 大手町駅",
               },
               "start_address" : "日本、〒100-0005 東京都千代田区丸の内1丁目9 東京駅",
〜省略〜

 念の為、本当にGoogle Mapで検索した内容と一致するか見てみます。
 確かに、出発地と目的地を名称で入力すると自動的に住所に変換されて結果が得られます。距離、所要時間ともにおおよそあっています。
 ですが、距離は単位が異なる。所要時間は一致、とはいえ混雑状況によっては同じ結果が得られるとは限らないかもしれない。
 APIによって得られる結果と、普段利用しているWEBサービスでは完全一致しない要素があることは理解しておく必要がありそうです。

Google Mapで経路検索する
APIと同様の結果は得られるが完全一致ではない様子

 今回は、Google Maps Platform APIを有効にしました。これにより、出発地と目的地をURLに直接書いてアクセスすると、距離と所要時間が得られました。

【今後の展開】
 今回は第一歩目。
 これができると、出発地は自宅固定、目的地は変数にして、任意のリストの場所までの距離/所要時間が順々に半自動で求められそうです。
 更に、任意のリストを、公に公開されているものを利用すれば網羅性もあり効率的に調べることができるような気がしてきました。

いいなと思ったら応援しよう!