質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

解決済

POSTで渡された住所から緯度・経度に変換するにはどうしたら良いのでしょうか?

chapp
chapp

総合スコア233

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

2回答

0評価

0クリップ

5518閲覧

投稿2018/09/17 14:29

編集2018/09/18 03:17

お世話になります。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月まで)が表示されている状態です。

イメージ説明

お手数おかけし恐縮ですが、他にも確認すべき事項ありましたらお教えください。

追記3
Geocoding APIの設定状況です。
イメージ説明

イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

退会済みユーザー

退会済みユーザー

2018/09/17 14:32

APIのレスポンスがなんらかのエラーを返しているものと思われます。
CHERRY

2018/09/18 02:54

最近取得された API キーの場合、課金情報を登録しないとAPIエラーになることがあるようなのですが、課金情報の登録は完了しているということでよろしいですか?

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。