IPアドレスから緯度経度を取得しGooglePlaceSearchの対応まで
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// アクセス元のIPアドレスを取得する $ipaddress = $_SERVER['REMOTE_ADDR']; // ipinfo.ioから、緯度経度を取得する(レスポンスがない場合もあるらしい) $ch = curl_init('ipinfo.io/' . $ipaddress); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $info = json_decode( curl_exec($ch), true ); curl_close($ch); // Cakephpのhttpリクエスト用クラス $httpSocket = new HttpSocket(); // Google Place Searchのgetリクエスト // keyは、GoogleDeveloperConsoleで、サービスを作成し、API用のkeyを発行すること // ※以下のサンプルでは、GOOGLE_API_KEYで定数化しています。 // 入力文字は、HTML側の、name="input"から取得する $placeArr = $httpSocket->get('https://maps.googleapis.com/maps/api/place/autocomplete/json', array( 'input' => $this->request->data['input'] ,'location' => $info['loc'] ,'radius' => '20000' // locationからの半径(Max20km) ,'types' => 'establishment' ,'language' => 'ja' ,'key' => GOOGLE_API_KEY ) ); // レスポンスは、json形式なので、配列でデコードする(第2引数にtrueを指定する) $tmp = json_decode( $placeArr->body, true ); $res = []; if ( count( $tmp ) !== 0 ) { foreach( $tmp['predictions'] as $key => $val ) { $res[] = $val['description']; } } // クロスオリジンリソースシェアリング(CORS)対策 // HTTPSも、上記のGOOGLE_API_KEYと同じく定数化しています。 // このスクリプトを利用しているURLドメインと、リクエスト元のドメインを一致させること // (通常は自ドメインでOK) header("Access-Control-Allow-Origin: " . HTTPS ); echo json_encode( $res ); exit(); |
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント