住所から緯度経度を取得する(Yahoo!ジオコーダAPI)

2021-07-07

Yahoo!ジオコーダAPIで住所から緯度経度を取得する

住所から緯度経度を取得する必要があったのでその方法を調べました。地図のAPIではGoogle Maps Platform(旧:Google Maps API)が有名ですが、Google Maps API から、Google Maps Platformへ移行時に無料枠が減ったのと登録時にクレジットカード情報が必要なったので、Yahooの地図APIの「Yahoo!ジオコーダAPI」を利用しようかと思います

Yahoo!ジオコーダのアプリケーションIDを取得する

Yahoo!ジオコーダAPI」は、住所を指定して、その位置情報(緯度、経度)を出力するAPIです。
このAPIを利用するには、Yahoo! JAPAN IDを取得してアプリケーションIDを取得する必要があります。アプリケーションIDを取得するには、「ご利用ガイド – Yahoo!デベロッパーネットワーク」のページを参考にしてアプリケーションIDを取得してください

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

アプリケーションIDを取得すると、以下のPHPで住所から緯度経度を取得できます。
補足して説明することもありませんが、住所はurlencodeでエンコードからAPIに投げています。APIの投げる時にパラメーターは、以下のようにしています

  • output=jsonで、出力する形式はJSONをしています
  • recursive=trueで、指定した住所レベルでマッチしなかった場合、上位のレベルで再検索を行います。

緯度経度情報を取得後は、json_decodeで配列に入れています

<?php

mb_language("Japanese");//文字コードの設定
mb_internal_encoding("UTF-8");

//住所(梅田スカイビル)を入れて緯度経度を求める。
$address = "大阪府大阪市北区大淀中1丁目1−87";
$apikey = "YahooのAPIを利用するための、アプリケーションID";
$address = urlencode($address);

$url = "https://map.yahooapis.jp/geocode/V1/geoCoder?output=json&recursive=true&appid=" . $apikey . "&query=" . $address ;
$contents = file_get_contents($url);
$contents = json_decode($contents);

$Coordinates = $contents ->Feature[0]->Geometry->Coordinates;
$geo = explode(",", $Coordinates);

$lon = $geo[0];
$lat = $geo[1];

echo "緯度:" . $lat . " 経度:" . $lon;

?>

プログラミングphp

Posted by admin