
お世話になります。GoogleMapのAPIを利用しPOSTで渡された住所や郵便番号、Googleで認識可能な施設名から、緯度・経度を取得したいと考えています。
取得できたか否かにより処理が異なるので、プログラムの初期段階で取得し、そして変数に入れたいと考えています。
POSTで渡された住所から緯度・経度に変換するにはどうしたら良いのでしょうか?
以下は有料となる前まで問題なかったスクリプト
//*** 検索の中心となる緯度・経度を取得 *** /* 有料に移行したことに伴い、APIキーを入れるとエラーとならないが、 チェックツールがAPIに問題あり(赤いマーク)を表示(下のコメントアウトした行です) 問題ありの原因を確認すると「キャッシュを削除し再度アクセス」とのメッセージがあり、 それを試みるも状況は全く変わらず。 */ //$json = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=". $landmark."&key=".$googlemap_api."&v=quarterly&sensor=false", false, //対して以下のキーを含まない場合は、チェックツールは有効であるものの、$jsonの部分で403エラーが表示。 $json = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=". $landmark."&sensor=false", false, stream_context_create(array( 'http' => array( 'timeout'=>10 // タイムアウト ) )) ); unset($effective); // HTTPリクエストがエラー if($json === FALSE){ if(count($http_response_header) > 0){ $stat_tokens = explode(' ', $http_response_header[0]); $error = $stat_tokens[1] . PHP_EOL; }else{ // タイムアウトの場合 $error = "タイムアウト" . PHP_EOL; } }else{ $obj = json_decode($json, true); // 上限一杯の場合 if($obj['status'] == 'OVER_QUERY_LIMIT'){ $error = "Google Map APIへのリクエストが上限に達しました。" . PHP_EOL; }elseif($obj['status'] == 'INVALID_REQUEST'){ $error = "Google Map APIで緯度・経度を取得できませんでした。" . PHP_EOL; }else{ // 住所情報が取れた場合 if(isset($obj['results'][0])){ $lat = $obj['results'][0]['geometry']['location']['lat']; $lng = $obj['results'][0]['geometry']['location']['lng']; $effective = "ok"; }else{ $error = "Google Map APIで住所から緯度経度を変換できませんでした。" . PHP_EOL; } } }
これにより、昨日から「住所から緯度・経度を取得」すべく色々と調べていますが、全て上手く行かない状態です。以下は現在のスクリプト。
<?php $address = "住所や施設名など"; $googlemap_api = "**********"; $apiurl = "https://maps.googleapis.com/maps/api/geocode/json?address=".$address."&key=".$googlemap_api; $google_leapis_url = "https://maps.googleapis.com/maps/api/geocode/json"; // エンコードして半角空白をgeometry用に変換する $url_encode = urlencode($address); $pattern = "/+/"; $url_encode = preg_replace($pattern, "%20", $url_encode); $googleMapsApiData = json_decode(file_get_contents($google_leapis_url."?address=".$url_encode."&key=".$googlemap_api, false, $contect), true); // 緯度経度を取得 $lat = $googleMapsApiData["results"][0]["geometry"]["location"]["lat"]; $lng = $googleMapsApiData["results"][0]["geometry"]["location"]["lng"]; $status = $googleMapsApiData["status"];
APIは取得済み(一昨日取得)で、有効なAPIは、以下の6種です。
Geocoding API
Maps JavaScript API
Directions API
Maps Embed API
Maps Static API
Places API
このような状況ですが、POSTで渡された住所から緯度・経度に変換するにはどうしたら良いのでしょうか?
お忙しいところ恐縮ですが、アドバイスのほど頂戴出来れば幸いです。
よろしくお願い申し上げます。
追記
APIエラーが生じているとのアドバイスをいただきましたが、その原因を調べる策はありますでしょうか?
この度の各種設定は、
http://www.webdesignleaves.com/pr/plugins/googlemap_01.html
こちらを参考に行い、それ以外の設定は行っていないと認識しています。
こちらも含めてアドバイス頂けると助かります。
追記2
支払いの設定も済ませております。「お支払い」メニューの概要には、クレジット残高と残り日数(来年の9月まで)が表示されている状態です。
お手数おかけし恐縮ですが、他にも確認すべき事項ありましたらお教えください。
回答2件
あなたの回答
tips
プレビュー