目次
サンプル・プログラムの実行例

サンプル・プログラムのダウンロード
getAltitude.php | サンプル・プログラム本体 |
pahooGeoCode.php | 住所・緯度・経度に関わるクラス pahooGeoCode。 使い方は「PHPで住所・ランドマークから最寄り駅を求める」「PHPで住所・ランドマークから緯度・経度を求める」などを参照。include_path が通ったディレクトリに配置すること。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
3.5.1 | 2024/09/23 | 参考URL |
3.5.0 | 2023/07/16 | 国土地理院ジオコーディングAPIを追加,検索キーの最小・最大長の指定 |
3.4 | 2021/10/17 | PHP8対応,リファラ・チェック改良 |
3.3 | 2020/04/10 | OSM Nominatim Search API追加 |
3.21 | 2019/06/01 | 逆ジオコーディングサービスの選択肢を増やした |
バージョン | 更新日 | 内容 |
---|---|---|
6.5.0 | 2025/06/14 | GoogleMaps JavaScript APIの変更に対応 |
6.4.0 | 2025/03/01 | makeYOLP_GeoSelectCategory()--引数$flagWorld追加 |
6.3.3 | 2024/09/14 | $this->NOMINATIM_EMAIL 追加 |
6.3.2 | 2024/02/14 | getStaticMap() -- bug-fix |
6.3.1 | 2023/07/09 | bug-fix |
バージョン | 更新日 | 内容 |
---|---|---|
1.8.1 | 2025/03/15 | validRegexPattern() -- debug |
1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
1.7.0 | 2024/10/09 | validURL() validEmail() 追加 |
1.6.0 | 2024/10/07 | isButton() -- buttonタグに対応 |
1.5.0 | 2024/01/28 | exitIfExceedVersion() 追加 |
サンプル・プログラムの流れ

準備:pahooGeoCode クラス
pahooGeoCode.php
37: class pahooGeoCode {
38: var $items; // 検索結果格納用
39: var $error; // エラー・フラグ
40: var $errmsg; // エラー・メッセージ
41: var $hits; // 検索ヒット件数
42: var $webapi; // 直前に呼び出したWebAPI URL
43:
44: // Google Cloud Platform APIキー
45: // https://cloud.google.com/maps-platform/
46: // ※Google Maps APIを利用しないのなら登録不要
47: var $GOOGLE_API_KEY_1 = '**************************'; // HTTPリファラ用
48: var $GOOGLE_API_KEY_2 = '**************************'; // IP制限用
49: var $GOOGLE_MAP_ID = '*************************'; // GoogleMaps ID
50:
51: // Yahoo! JAPAN Webサービス アプリケーションID
52: // https://e.developer.yahoo.co.jp/register
53: // ※Yahoo! JAPAN Webサービスを利用しないのなら登録不要
54: var $YAHOO_APPLICATION_ID = '*****************************';
クラスについては「PHPでクラスを使ってテキストの読みやすさを調べる」を参照されたい。

地図や住所検索として Google を利用するのであれば、Google Cloud Platform APIキー とマップID が必要で、その入手方法は「Google Cloud Platform - WebAPIの登録方法」を、Yahoo!JAPAN を利用するのであれば、Yahoo! JAPAN Webサービス アプリケーションIDが必要で、その入手方法は「Yahoo!JAPAN デベロッパーネットワーク - WebAPIの登録方法」を、それぞれ参照されたい。
準備:地図サービス(WebAPI)の選択
getAltitude.php
51: //地図描画サービスの選択
52: // 0:Google
53: // 2:地理院地図・OSM
54: define('MAPSERVICE', 2);
55:
56: //住所検索サービスの選択
57: // 0:Google
58: // 1:Yahoo!JAPAN
59: // 11:HeartRails Geo API
60: // 12:OSM Nominatim Search API
61: // 13:国土地理院ジオコーディングAPI
62: define('GEOSERVICE', 11);
63:
64: //逆ジオコーディングサービスの選択
65: // 0:Google
66: // 1:Yahoo!JAPAN
67: // 11:HeartRails Geo API
68: // 21:簡易ジオコーディングサービス
69: define('REVGEOSERVICE', 1);
住所検索サービスは、Google、Yahoo!JAPAN、HeartRails Geo API、OSM Nominatim Search API、国土地理院ジオコーディングAPIから選べる。あらかじめ、定数 GEOSERVICE に値を設定すること。
逆ジオコーディングサービスは、Google、Yahoo!JAPAN、HeartRails Geo API、簡易ジオコーディングサービスから選べる。あらかじめ、定数 REVGEOSERVICE に値を設定すること。
YOLP 標高API
なお、同APIの解説によると、「国土地理院長の承認を得て、同院発行の基盤地図情報及び日本のジオイド2000を複製したものである。(承認番号 平成22業複、第485号)」そうなので、河川・湖沼や海上、海外の標高は求めることができない。
URL |
---|
https://map.yahooapis.jp/alt/V1/getAltitude |
フィールド名 | 要否 | 内 容 |
---|---|---|
appid | 必須 | Yahoo! JAPAN Webサービス アプリケーションID |
coordinates | 必須 | 経度、緯度の順で「,」で区切る。 緯度、経度はfloat型。 複数の緯度経度を指定する場合は「経度,緯度,経度,緯度,……」のように指定する。GETリクエストの場合は40点、POSTリクエストの場合は100点まで同時に指定できる。 |
output | 任意 | xml:XML形式【デフォルト】 json:JSON形式 |
callback | 任意 | outputパラメータがjsonのとき、JSONPとして出力する際のコールバック関数名を指定する。UTF-8でエンコードした文字列を指定する。 |
解説:YOLP 標高APIの使い方
pahooGeoCode.php
1144: /**
1145: * 「YOLP 標高API」を利用して標高を求める
1146: * @param float $latitude 緯度(世界測地系)
1147: * @param float $longitude 経度(世界測地系)
1148: * @return float 標高(メートル)/FALSE
1149: */
1150: function getAltitude($latitude, $longitude) {
1151: $url = $this->getURL_YOLP_altitude($latitude, $longitude);
1152: $this->webapi = $url;
1153:
1154: // PHP4用; DOM XML利用
1155: if ($this->isphp5over() == FALSE) {
1156: if (($dom = $this->read_xml($url)) == NULL) return FALSE;
1157: $pagingInfo = $dom->get_elements_by_tagname('YDF');
1158: // レスポンス・チェック
1159: $rc = $pagingInfo[0]->get_elements_by_tagname('recordCount');
1160: $rc = (int)$rc[0]->get_content();
1161: if ($rc <= 0) return FALSE;
1162: // 検索結果取りだし
1163: $hotels = $dom->get_elements_by_tagname('hotels');
1164: $hotel = $hotels[0]->get_elements_by_tagname('hotel');
1165: $cnt = 1;
1166: foreach ($hotel as $val) {
1167: foreach ($RakutenItems as $name) {
1168: $node = $val->get_elements_by_tagname('hotelBasicInfo');
1169: $node = $node[0]->get_elements_by_tagname($name);
1170: if ($node != NULL) {
1171: $items[$cnt][$name] = (string)$node[0]->get_content();
1172: }
1173: }
1174: $cnt++;
1175: }
1176:
1177: // PHP5用; SimpleXML利用
1178: } else {
1179: $this->unknown_certificate();
1180: $xml = simplexml_load_file($url);
1181: // レスポンス・チェック
1182: if ($xml == NULL) return FALSE;
1183: if ($xml->ResultInfo->Count <= 0) return FALSE;
1184: // 検索結果取りだし
1185: $alt = (double)$xml->Feature[0]->Property->Altitude;
1186: }
1187:
1188: return $alt;
1189: }
解説:気圧を求める
pahooGeoCode.php
1191: /**
1192: * 気圧を求める
1193: * @param float $altitude 標高(メートル)
1194: * @return float 気圧(ヘクトパスカル)
1195: */
1196: function getPressure($altitude) {
1197: return pow(10, (log10(1013.25) - ($altitude / 18410)));
1198: }
活用例
参考サイト
- YOLP 標高API:Yahoo!デベロッパーネットワーク
- PHP で最寄り駅を求める:ぱふぅ家のホームページ
- Yahoo!JAPAN デベロッパーネットワーク - WebAPIの登録方法:ぱふぅ家のホームページ
- 標高とポテトチップス袋の変化:ぱふぅ家のホームページ
- 地図・住所から標高/気圧/座標を調べる:みんなの知識 ちょっと便利帳
(2025年6月14日)GoogleMaps JavaScript APIの変更に対応した.