目次
サンプル・プログラムの実行例
サンプル・プログラムのダウンロード
| getAltitude.php | サンプル・プログラム本体 |
| pahooGeoCode.php | 住所・緯度・経度に関わるクラス pahooGeoCode。 使い方は「PHPで住所・ランドマークから最寄り駅を求める」「PHPで住所・ランドマークから緯度・経度を求める」などを参照。include_path が通ったディレクトリに配置すること。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 3.4.0 | 2025/08/30 | .pahooEnv導入 |
| 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追加 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 6.9.1 | 2025/11/25 | PHP8.5対応:double→float |
| 6.9.0 | 2025/09/21 | jsPolygon, jsPolygon_Gmap, jsPolygon_Leaflet, loadGeoJSON, getPrefBorderList を追加 |
| 6.8.0 | 2025/08/10 | アクセスキーなどを ".pahooEnd" に分離 |
| 6.7.1 | 2025/07/26 | jsLine_Gmap() - bug-fix |
| 6.7.0 | 2025/07/20 | drawJSmap,drawGMap -- 引数 $markerLevel 追加 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
サンプル・プログラムの流れ
準備:PHP の https対応
Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
準備:pahooGeoCode クラス
pahooGeoCode.php
41: class pahooGeoCode {
42: public $items; // 検索結果格納用
43: public $error; // エラー・フラグ
44: public $errmsg; // エラー・メッセージ
45: public $hits; // 検索ヒット件数
46: public $webapi; // 直前に呼び出したWebAPI URL
47:
48: // 都道府県境界線データ
49: // SimpleMaps.com is a product of Pareto Software, LLC. © 2010-2025
50: // https://simplemaps.com/gis/country/jp
51: // ※各自の環境に合わせて設定すること
52: public $GeoJsonJP = __DIR__ . '/jp.json';
53:
54: // -- 以下のデータは .env ファイルに記述可能
55: // Google Cloud Platform APIキー
56: // https://cloud.google.com/maps-platform/
57: // ※Google Maps APIを利用しないのなら登録不要
58: public $GOOGLE_API_KEY_1 = ''; // HTTPリファラ用
59: public $GOOGLE_API_KEY_2 = ''; // IP制限用
60: public $GOOGLE_MAP_ID = ''; // GoogleMaps ID
61:
62: // Yahoo! JAPAN Webサービス アプリケーションID
63: // https://e.developer.yahoo.co.jp/register
64: // ※Yahoo! JAPAN Webサービスを利用しないのなら登録不要
65: public $YAHOO_APPLICATION_ID = '';
66:
67: // OSM Nominatim Search API利用時に知らせるメールアドレス
68: // https://wiki.openstreetmap.org/wiki/JA:Nominatim#.E6.A4.9C.E7.B4.A2
69: // ※OSM Nominatim Search APIを利用しないのなら登録不要
70: public $NOMINATIM_EMAIL = '';
71:
72: // IP2Location.io APIキー
73: // https://www.ip2location.io/
74: // ※IP2Location.ioを利用しないのなら登録不要
75: public $IP2LOCATION_API_KEY = '';
地図や住所検索として Google を利用するのであれば Google Cloud Platform APIキー とマップID が必要で、その入手方法は「Google Cloud Platform - WebAPIの登録方法」を、Yahoo!JAPAN を利用するのであれば Yahoo! JAPAN Webサービス アプリケーションIDが必要で、その入手方法は「Yahoo!JAPAN デベロッパーネットワーク - WebAPIの登録方法」を、IP2Location.ioを利用するのであれば「PHPでIPアドレスやホスト名から住所を求める」を、それぞれ参照されたい。
PHPのクラスについては「PHPでクラスを使ってテキストの読みやすさを調べる」を参照されたい。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
準備:地図サービス(WebAPI)の選択
getAltitude.php
57: // 地図描画サービスの選択
58: // 0:Google
59: // 2:地理院地図・OSM
60: define('MAPSERVICE', 2);
61:
62: // 住所検索サービスの選択
63: // 0:Google
64: // 1:Yahoo!JAPAN
65: // 11:HeartRails Geo API
66: // 12:OSM Nominatim Search API
67: // 13:国土地理院ジオコーディングAPI
68: define('GEOSERVICE', 11);
69:
70: // 逆ジオコーディングサービスの選択
71: // 0:Google
72: // 1:Yahoo!JAPAN
73: // 11:HeartRails Geo API
74: // 21:簡易ジオコーディングサービス
75: 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
1292: /**
1293: * 「YOLP 標高API」を利用して標高を求める
1294: * @param float $latitude 緯度(世界測地系)
1295: * @param float $longitude 経度(世界測地系)
1296: * @return float 標高(メートル)/FALSE
1297: */
1298: function getAltitude($latitude, $longitude) {
1299: $url = $this->getURL_YOLP_altitude($latitude, $longitude);
1300: $this->webapi = $url;
1301:
1302: // PHP4用; DOM XML利用
1303: if ($this->isphp5over() == FALSE) {
1304: if (($dom = $this->read_xml($url)) == NULL) return FALSE;
1305: $pagingInfo = $dom->get_elements_by_tagname('YDF');
1306: // レスポンス・チェック
1307: $rc = $pagingInfo[0]->get_elements_by_tagname('recordCount');
1308: $rc = (int)$rc[0]->get_content();
1309: if ($rc <= 0) return FALSE;
1310: // 検索結果取りだし
1311: $hotels = $dom->get_elements_by_tagname('hotels');
1312: $hotel = $hotels[0]->get_elements_by_tagname('hotel');
1313: $cnt = 1;
1314: foreach ($hotel as $val) {
1315: foreach ($RakutenItems as $name) {
1316: $node = $val->get_elements_by_tagname('hotelBasicInfo');
1317: $node = $node[0]->get_elements_by_tagname($name);
1318: if ($node != NULL) {
1319: $items[$cnt][$name] = (string)$node[0]->get_content();
1320: }
1321: }
1322: $cnt++;
1323: }
1324:
1325: // PHP5用; SimpleXML利用
1326: } else {
1327: $this->unknown_certificate();
1328: $xml = simplexml_load_file($url);
1329: // レスポンス・チェック
1330: if ($xml == NULL) return FALSE;
1331: if ($xml->ResultInfo->Count <= 0) return FALSE;
1332: // 検索結果取りだし
1333: $alt = (float)$xml->Feature[0]->Property->Altitude;
1334: }
1335:
1336: return $alt;
1337: }
解説:気圧を求める
pahooGeoCode.php
1339: /**
1340: * 気圧を求める
1341: * @param float $altitude 標高(メートル)
1342: * @return float 気圧(ヘクトパスカル)
1343: */
1344: function getPressure($altitude) {
1345: return pow(10, (log10(1013.25) - ($altitude / 18410)));
1346: }
活用例
参考サイト
- YOLP 標高API:Yahoo!デベロッパーネットワーク
- PHP で最寄り駅を求める:ぱふぅ家のホームページ
- Yahoo!JAPAN デベロッパーネットワーク - WebAPIの登録方法:ぱふぅ家のホームページ
- 標高とポテトチップス袋の変化:ぱふぅ家のホームページ
- 地図・住所から標高/気圧/座標を調べる:みんなの知識 ちょっと便利帳

(2025年12月6日)PHP8.5対応:double→float表記変更
(2025年8月30日).pahooEnv 導入
(2025年6月14日)GoogleMaps JavaScript APIの変更に対応した.