share facebook facebook facebook twitter twitter menu hatena pocket slack

2020.12.01 TUE

PHPでGoogle Geocoding APIを呼び出す

西田 駿史

WRITTEN BY 西田 駿史

GCPのGeocoding APIをPHP(Guzzle)を使って呼び出してみます。

APIキーを用意する

https://console.cloud.google.com/apis/library/geocoding-backend.googleapis.com
課金アカウント設定済みのGCPプロジェクトでGeocoding APIを有効化し、APIキーを発行します。

PHPからAPIを呼び出す

Guzzleをインストール

HTTPクライアントのGuzzleをインストールします。

composer require guzzlehttp/guzzle

APIを呼び出す

$api_keyには発行したAPIキーの文字列を設定します。

geocode.php

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;

$http_client = new Client();
$url = 'https://maps.googleapis.com/maps/api/geocode/json';
$api_key = '**********************************';

/*
 Geocoding (latitude/longitude lookup)
 住所から緯度経度を取得
 */
$address = '東京都北区赤羽';

try {
    $response = $http_client->request('GET', $url, [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'query' => [
            'key' => $api_key,
            'language' => 'ja',
            'address' => $address,
        ],
        'verify' => false,
    ]);
} catch (ClientException $e) {
    throw $e;
}

$body = $response->getBody();
echo $body . PHP_EOL;

/*
 Reverse geocoding (address lookup)
 緯度経度から住所を取得
 */
$latitude = '35.7799638';
$longitude = '139.723053';
$latlng = $latitude . ',' . $longitude;

try {
    $response = $http_client->request('GET', $url, [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'query' => [
            'key' => $api_key,
            'language' => 'ja',
            'latlng' => $latlng,
        ],
        'verify' => false,
    ]);
} catch (ClientException $e) {
    throw $e;
}
$body = $response->getBody();
$json = json_decode($body);
echo $json->results[0]->formatted_address;

実行結果は次のようになります。

>php geocode.php
{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "赤羽",
               "short_name" : "赤羽",
               "types" : [ "political", "sublocality", "sublocality_level_2" ]
            },
            {
               "long_name" : "北区",
               "short_name" : "北区",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "東京都",
               "short_name" : "東京都",

元記事はこちら

PHPでGoogle Geocoding APIを呼び出す

西田 駿史

西田 駿史

2019年4月入社。第四開発事業部グループリーダー。海岸オフィス所属

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。