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

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

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

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

Google マップ

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

Q&A

1回答

1377閲覧

jsonから要素が取り出せません

prosal

総合スコア17

Geolocation

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

Google マップ

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

0グッド

1クリップ

投稿2020/04/08 12:24

編集2022/01/12 10:55

googleマップから逆ジオコーディングしてjsonがかえって来たのですが
jsonから要素を取り出せません。
phpにて変数に入れるにはどうすればいいでしょうか。
宜しくお願い致します。

$url ="https://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&language=ja&key=".$g_key; $json = file_get_contents($url); $de_json = json_decode($json); echo 'de_j:'.$de_json->{'results'}; echo '<hr>'; echo 'json_formatted:'.$json_add; echo '<hr>'; var_dump($de_json); echo '<hr>';

ご指摘いただき下記のように修正しました。

$url ="https://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&language=ja&key=".$g_key; $json = file_get_contents($url); echo json_encode($json); $json_de = json_decode($json); //echo 'de_j:'.$de_json->{'results'}; //// $decoded_jsonからデータを取り出して表示します。 print($json_de->{"c"}); //echo json_encode($json_de,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); echo '<hr>'; //var_dump($de_json); //echo '<hr>'; foreach (json_decode($json)->results as $result) { echo 'lat:' . $result->geometry->location->lat . ', lng:' . $result->geometry->location->lng . PHP_EOL; }

出力結果:東京タワー
東京タワーでlat,lngを取得し、逆コーディングで住所を取得したいのですが
見にくく要素が分かりません。
どのようなコードだとわかりやすくなるのでしょうか。。

"{\n "plus_code" : {\n "compound_code" : "MP5W+C5 \u65e5\u672c\u3001\u6771\u4eac\u90fd\u6771\u4eac",\n "global_code" : "8Q7XMP5W+C5"\n },\n "results" : [\n {\n "address_components" : [\n {\n "long_name" : "\uff18",\n "short_name" : "\uff18",\n "types" : [ "premise" ]\n },\n {\n "long_name" : "\uff12",\n "short_name" : "\uff12",\n "types" : [ "political", "sublocality", "sublocality_level_4" ]\n },\n {\n "long_name" : "\uff14\u4e01\u76ee",\n "short_name" : "\uff14\u4e01\u76ee",\n "types" : [ "political", "sublocality", "sublocality_level_3" ]\n },\n {\n "long_name" : "\u829d\u516c\u5712",\n "short_name" : "\u829d\u516c\u5712",\n "types" : [ "political", "sublocality", "sublocality_level_2" ]\n },\n {\n "long_name" : "\u6e2f\u533a",\n "short_name" : "\u6e2f\u533a",\n "types" : [ "locality", "political" ]\n },\n {\n "long_name" : "\u6771\u4eac\u90fd",\n "short_name" : "\u6771\u4eac\u90fd",\n "types" : [ "administrative_area_level_1", "political" ]\n },\n {\n "long_name" : "\u65e5\u672c",\n "short_name" : "JP",\n "types" : [ "country", "political" ]\n },\n {\n "long_name" : "105-0011",\n "short_name" :

途中略

20.3585295,\n "lng" : 122.8554688\n }\n },\n "location" : {\n "lat" : 36.204824,\n "lng" : 138.252924\n },\n "location_type" : "APPROXIMATE",\n "viewport" : {\n "northeast" : {\n "lat" : 45.6412626,\n "lng" : 154.0031455\n },\n "southwest" : {\n "lat" : 20.3585295,\n "lng" : 122.8554688\n }\n }\n },\n "place_id" : "ChIJLxl_1w9OZzQRRFJmfNR1QvU",\n "types" : [ "country", "political" ]\n }\n ],\n "status" : "OK"\n}\n"
lat:35.6585805, lng:139.7454329 lat:35.6585769, lng:139.7454506 lat:35.6585453, lng:139.7452445 lat:35.6563336, lng:139.7479592 lat:35.6571637, lng:139.7485979 lat:35.6571637, lng:139.7485979 lat:35.6580813, lng:139.7515077 lat:35.6803997, lng:139.7690174 lat:35.6761919, lng:139.6503106 lat:36.204824, lng:138.252924 gmads:Array

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/08 13:11

〈jsonから要素を取り出せません。〉を第三者にも伝わるよう、丁寧に説明していただけないでしょうか。json_decode()にかけたらどうなるのですか?
退会済みユーザー

退会済みユーザー

2020/04/09 06:56

取得したjsonをまず一旦そのままファイルに保存して、別途そのファイルをjsonエディタやjson整形ツールにかければ見やすくなります。
guest

回答1

0

resultsってArrayで返ってくるから、
foreach()ループを回すなりしたらいいんじゃないかとー。

php

1<?php 2 3$json = <<<EOT 4{ 5 "results" : [ 6 { 7 "address_components" : [ 8 { 9 "long_name" : "1600", 10 "short_name" : "1600", 11 "types" : [ "street_number" ] 12 }, 13 { 14 "long_name" : "Amphitheatre Pkwy", 15 "short_name" : "Amphitheatre Pkwy", 16 "types" : [ "route" ] 17 }, 18 { 19 "long_name" : "Mountain View", 20 "short_name" : "Mountain View", 21 "types" : [ "locality", "political" ] 22 }, 23 { 24 "long_name" : "Santa Clara County", 25 "short_name" : "Santa Clara County", 26 "types" : [ "administrative_area_level_2", "political" ] 27 }, 28 { 29 "long_name" : "California", 30 "short_name" : "CA", 31 "types" : [ "administrative_area_level_1", "political" ] 32 }, 33 { 34 "long_name" : "United States", 35 "short_name" : "US", 36 "types" : [ "country", "political" ] 37 }, 38 { 39 "long_name" : "94043", 40 "short_name" : "94043", 41 "types" : [ "postal_code" ] 42 } 43 ], 44 "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA", 45 "geometry" : { 46 "location" : { 47 "lat" : 37.4224764, 48 "lng" : -122.0842499 49 }, 50 "location_type" : "ROOFTOP", 51 "viewport" : { 52 "northeast" : { 53 "lat" : 37.4238253802915, 54 "lng" : -122.0829009197085 55 }, 56 "southwest" : { 57 "lat" : 37.4211274197085, 58 "lng" : -122.0855988802915 59 } 60 } 61 }, 62 "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA", 63 "types" : [ "street_address" ] 64 } 65 ], 66 "status" : "OK" 67} 68EOT; 69foreach (json_decode($json)->results as $result) { 70 echo 'lat:' . $result->geometry->location->lat . ', lng:' . $result->geometry->location->lng . PHP_EOL; 71}

投稿2020/04/08 13:14

編集2020/04/08 13:17
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

prosal

2020/04/09 06:49

ありがとうございます! 取得できそうですが、欲しい要素を見つけるのが分かりにくいのですが、どのようにすれば見やすくなるでしょうか。 逆ジオコーディングで formatted_address を取得したいのですが
退会済みユーザー

退会済みユーザー

2020/04/09 06:51

geometioryと同位置にあるから、わたしのサンプルコードに準じると $result->formatted_address で得られそうな。
退会済みユーザー

退会済みユーザー

2020/04/09 06:53

見やすくするという意味では、json整形ツールを使うか、jsonエディタを駆使するか、webブラウザにjson表示の拡張機能を追加するか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問