上へ戻る

住所から経度緯度をPHPで簡単変換するならGoogle Maps Geocoding API を使おう!

Pocket

PHPで元々ある住所の情報を経度緯度に変換する場合。

これはGoogle Maps Geocoding APIを使えば簡単に変換することができます。
ただ「僕はコードはコピペでいいんです!」という方の為に、まずはコピペで使えるPHPでの変換方法をご紹介します。

PHPで住所から経度緯度を取得する方法。


コピペしたら使えるコードがこちら。以前はAPIキーが必要でしたが、今は取得する必要がなく使えます。

$post = "変換したい住所 例:滋賀県大津市1";
$apiurl = "https://maps.googleapis.com/maps/api/geocode/json?address=";
$json = json_decode(@file_get_contents($apiurl.$post),false);
$lat = $json->results[0]->geometry->location->lat;
$lon = $json->results[0]->geometry->location->lng;

これで$latに経度が、$lonに緯度が入ります。
ちなみに制限として1秒で10回しかリクエストできないので、一気に変換する場合はusleep (200000);などを繰り返し処理の下に置いといて回し続けられるようにしましょう。

どうでしょう?簡単でしょう!

続いてはコードの仕組み知りたいんだ!という方の為に、下記で説明します。


PHPで住所から経度緯度を取得するコードの中身を説明。


まずはそもそもの変換するにはGoogle Maps Geocoding APIというサービスを使わないといけないということです。

例えば下記URLをブラウザに直接入れてみてください。


https://maps.googleapis.com/maps/api/geocode/json?address=滋賀県大津市1

データがJSON形式で返してくれるのがわかると思います。

これはどういう意味かというと、指定のURLのパラメーターに住所を指定することで、JSON形式で取得できるようにしてくれるサービスです。

$json = json_decode(@file_get_contents($apiurl.$post),false);

次のコードであるjson_decodeは@file_get_contentsで取得した内容をJSONでデコードしてくれるというもの。ちなみにfalseはオブジェクト型に変換して、trueが配列型に変換されます。

取り出し方の時に僕が取り出しやすい読み方がオブジェクト型なので、基本falseで取得しています。

$lat = $json->results[0]->geometry->location->lat;
$lon = $json->results[0]->geometry->location->lng;


あとは上の方法で取得するのみ。

JSONの取得に慣れていないとどういう意味かわかりにくいかもしれないので、下記の画像で説明します。


201606131

まず$jsonにはすべてのデータが入っています。その中でresultsは複数の内容があるのですが、取得するのは0番目の配列のものなので0を指定。


そこからはすべて一つの配列だけなので、geometry->location->latの順番に指定していくだけです。

内容がわかれば、実はそんなに怖くないJSONの取得。経度緯度以外でも他の情報も取得できるので参考にしてみてください。

最新投稿された記事はいかがですか?

1987年2月生まれ、滋賀県湖南市育ち、現在湖南市の三雲駅から徒歩20分超の場所でコワーキングスペース「今プラス」の管理人をしております。
続きを読む