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

サンプル・プログラム
getlatlng.php | サンプル・プログラム本体 |
.pahooEnv | クラウドサービスを利用するためのアカウント情報などを記入する .env ファイル。 使い方は「各種クラウド連携サービス(WebAPI)の登録方法」を参照。include_path が通ったディレクトリに配置すること。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
pahooGeoCode.php | 住所・緯度・経度に関わるクラス pahooGeoCode。 使い方は「PHPで住所・ランドマークから最寄り駅を求める」「PHPで住所・ランドマークから緯度・経度を求める」などを参照。include_path が通ったディレクトリに配置すること。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
2.8.0 | 2025/08/13 | pahooInputData.php 導入 |
2.7.0 | 2023/07/16 | 検索キーの最小・最大長の指定 |
2.6.0 | 2023/07/02 | 国土地理院ジオコーディングAPIを追加 |
2.5 | 2021/10/10 | PHP8対応,リファラ・チェック改良など |
2.4 | 2020/04/18 | Yahoo! JavaScriptマップ,地理院地図、OpenStreetMapに対応。逆ジオコーディングサービスの選択肢を増やした。 |
バージョン | 更新日 | 内容 |
---|---|---|
6.8.0 | 2025/08/10 | アクセスキーなどを ".env" に分離 |
6.7.1 | 2025/07/26 | jsLine_Gmap() - bug-fix |
6.7.0 | 2025/07/20 | drawJSmap,drawGMap -- 引数 $markerLevel 追加 |
6.6.0 | 2025/07/19 | drawJSmap,drawGMap,drawLeaflet -- マップ中心マーカー表示引数を追加 |
6.5.0 | 2025/06/14 | GoogleMaps JavaScript APIの変更に対応 |
関数/メソッド | 機能 | 詳細 |
---|---|---|
pahooLoadEnv | .env ファイルからデータを読み込む | .env ファイルは include_path が通っているディレクトリに配置すること |
execFunc | 指定した関数を実行し,その戻り値を返す. | phpversion関数が実装されていなければ強制終了する. |
exitIfLessVersion | PHP処理系が指定したバージョン未満ならメッセージを表示して強制終了する. | |
exitIfExceedVersion | PHP処理系が指定したバージョンを超えたらメッセージを表示して強制終了する. | |
isCommandLine | コマンドラインから起動されたかどうかを求める. | |
isButton | HTML FORMで指定したボタンが押されたかどうかを求める. | filter_input()関数および $argv を参照する. |
getParam | HTML FORMで指定したINPUTの内容を取り出す. | filter_input()関数および $argv を参照する. |
validNumber | 数値バリデーションを行う. | 数値が整数か小数かを指定し,最小値と最大値を指定する. |
getValidNumber | HTML FORMで指定したINPUTの内容を数値として取り出す(バリデーション付き) | filter_input()関数および $argv を参照する. |
validString | 文字列バリデーションを行う. | filter_input()関数および $argv を参照する. 文字列の最小長,最大長,排除または受容するパターンを指定する. |
validURL | URLバリデーションを行う. | RFC 1738 Uniform Resource Locators にマッチするかどうかを照合する。 |
validEmail | メールアドレス・URLバリデーションを行う. | RFC 2282 Internet Message Format にマッチするかどうかを照合する。 |
getValidString | HTML FORMで指定したINPUTの内容を文字列として取り出す(バリデーション付き) | filter_input()関数および $argv を参照する. |
validRegexPattern | 正規表現のバリデーションを行う. | |
getPasswordHash | パスワード・ハッシュをつくる. | |
verifyPassword | パスワードがハッシュに合致するかどうかを求める. | |
roundFloat | 小数を指定した桁数で丸めて文字列として返す。 | 与えた小数の有効桁数より指定桁数が多いときには,末尾に0をサプレスする. |
サンプル・プログラムの流れ

準備:PHP の https対応


Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順

これで準備は完了だ。
準備:pahooInputData 関数群

また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
準備:pahooGeoCode クラス
pahooGeoCode.php
40: class pahooGeoCode {
41: public $items; // 検索結果格納用
42: public $error; // エラー・フラグ
43: public $errmsg; // エラー・メッセージ
44: public $hits; // 検索ヒット件数
45: public $webapi; // 直前に呼び出したWebAPI URL
46:
47: // -- 以下のデータは .env ファイルに記述可能
48: // Google Cloud Platform APIキー
49: // https://cloud.google.com/maps-platform/
50: // ※Google Maps APIを利用しないのなら登録不要
51: public $GOOGLE_API_KEY_1 = ''; // HTTPリファラ用
52: public $GOOGLE_API_KEY_2 = ''; // IP制限用
53: public $GOOGLE_MAP_ID = ''; // GoogleMaps ID
54:
55: // Yahoo! JAPAN Webサービス アプリケーションID
56: // https://e.developer.yahoo.co.jp/register
57: // ※Yahoo! JAPAN Webサービスを利用しないのなら登録不要
58: public $YAHOO_APPLICATION_ID = '';
59:
60: // OSM Nominatim Search API利用時に知らせるメールアドレス
61: // https://wiki.openstreetmap.org/wiki/JA:Nominatim#.E6.A4.9C.E7.B4.A2
62: // ※OSM Nominatim Search APIを利用しないのなら登録不要
63: public $NOMINATIM_EMAIL = '';
64:
65: // IP2Location.io APIキー
66: // https://www.ip2location.io/
67: // ※IP2Location.ioを利用しないのなら登録不要
68: public $IP2LOCATION_API_KEY = '';
PHPのクラスについては「PHPでクラスを使ってテキストの読みやすさを調べる」を参照されたい。

地図や住所検索として 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でクラスを使ってテキストの読みやすさを調べる」を参照されたい。
準備:地図サービス(WebAPI)の選択
getlatlng.php
54: // 地図描画サービスの選択
55: // 0:Google
56: // 2:地理院地図・OSM
57: define('MAPSERVICE', 2);
58:
59: // 住所検索サービスの選択
60: // 0:Google
61: // 1:Yahoo!JAPAN
62: // 11:HeartRails Geo API
63: // 12:OSM Nominatim Search API
64: // 13:国土地理院ジオコーディングAPI
65: define('GEOSERVICE', 11);
66:
67: // 逆ジオコーディングサービスの選択
68: // 0:Google
69: // 1:Yahoo!JAPAN
70: // 11:HeartRails Geo API
71: // 21:簡易ジオコーディングサービス
72: define('REVGEOSERVICE', 11);
住所検索サービスは、Google、Yahoo!JAPAN、HeartRails Geo API、OSM Nominatim Search API から選べる。あらかじめ、定数 GEOSERVICE に値を設定すること。
逆ジオコーディングサービスは、Google、Yahoo!JAPAN、HeartRails Geo API、簡易ジオコーディングサービスから選べる。あらかじめ、定数 REVGEOSERVICE に値を設定すること。


解説:初期設定
getlatlng.php
74: // マップの表示サイズ(単位:ピクセル)
75: define('MAP_WIDTH', 600);
76: define('MAP_HEIGHT', 400);
77: // マップID
78: define('MAPID', 'map_id');
79: // 初期値
80: define('DEF_LATITUDE', 35.67); // 緯度
81: define('DEF_LONGITUDE', 139.78); // 経度
82: define('DEF_TYPE', 'roadmap'); // マップタイプ
83: define('DEF_ZOOM', 8); // ズーム
84: define('DEF_CATEGORY', 'address'); // カテゴリ
85:
86: // 検索キーの最小文字長
87: define('QUERY_MIN_LEN', 3);
88:
89: // 検索キーの最大文字長
90: define('QUERY_MAX_LEN', 99);
解説:測地系変換
pahooGeoCode.php
621: /**
622: * 世界測地系を日本測地系に変換する
623: * @param float $long 経度(世界測地系)
624: * @param float $lat 緯度(世界測地系)
625: * @return float array(経度,緯度)(日本測地系)
626: */
627: function wgs84_tokyo($long, $lat) {
628: $glong = $long + $lat * 0.000046047 + $long * 0.000083049 - 0.010041;
629: $glat = $lat + $lat * 0.00010696 - $long * 0.000017467 - 0.0046020;
630: return array($glong, $glat);
631: }
解説:リージョン

これを回避するためには、API呼び出しでパラメータ "region=JP" を追加してやる必要がある。気持ちが悪い方は、下記のようにAPI呼び出しを修正してほしい。
pahooGeoCode.php
940: <script src="https://maps.googleapis.com/maps/api/js?key={$key}&loading=async&libraries=marker&callback=initMap®ion=JP" async defer loading="async"></script>
941: <script>
942: function initMap() {
参考サイト
- Google Geocoding API
- 緯度・経度算出(For GoogleMap)
- PHPの関数で複数の値を戻す:ぱふぅ家のホームページ
- PHPで住所・ランドマークから緯度・経度を求める:ぱふぅ家のホームページ
- PHPで緯度・経度から住所を求める:ぱふぅ家のホームページ
- PHPでクラウド連携:参考書籍:ぱふぅ家のホームページ
(2025年8月13日).pahooEnv 導入
(2025年6月14日)GoogleMaps JavaScript APIの変更に対応した.