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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

3回答

3615閲覧

google map APIはレスポンスにjsonやxml形式が使われているのか?

Ms.yy

総合スコア83

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2019/08/31 04:46

apiの流れがいまいち分かりません。

apiを使うとxmlやjson形式でレスポンスが返ってきてそれをスクリプトコードで解読すると聞いたのですが、
下記のapiコードはどこにjson形式など使われているのでしょうか?

###map6_1.html

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Google Maps API サンプル</title> </head> <body> <p>瑞穂運動場です。</p> <div id="map" style="width:620px; height:400px"></div> <script type="text/javascript"> function initMap() { var opts = { zoom: 15, center: new google.maps.LatLng(35.1239654, 136.9417741) }; var map = new google.maps.Map(document.getElementById("map"), opts); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=APIKey&callback=initMap"> </script> </body> </html>

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

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

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

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

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

guest

回答3

0

ベストアンサー

JSON

サーバから受け取っているデータはJSON(技法的にはJSONP)ではないでしょうか。

イメージ説明

配列初期化子

厳密には、ViewportInfoService.GetViewportInfo はJavaScriptコードとして受け取っていて、["地図データ ©2019 Google",[...]]配列初期化子として扱われています。

Googleサーバ側ではJavaScriptコード生成時にJSONにシリアライズする事で実装していると思われますが、クライアント側から見れば、JSONではありません
「JavaScriptコード」を返し、受け取ったJavaScriptコードを直接実行するのがJSONPの特徴です。

HTTPレスポンス

HTTP通信は文字列でデータ交換を行うものなので、JavaScriptからそれらを扱うにはJavaScriptのデータに変換可能な書式でなければなりません。

  • JSON.parse (JSONのパーサ)
  • DOMParser (HTMLのパーサ)
  • document.implementation.createDocument (XMLのパーサ)

のように予め、JavaScriptが標準でパーサを用意している書式は扱いやすいといえます。
書式が決まっていれば、これらでなくてもOKですが、例えば、

  • サーバからCSV書式を返すよ
  • JavaScript標準APIにCSVパーサはないから、自分で頑張って書いてね

というドキュメントはあまりに不親切なので、

  • サーバからCSV書式を返すよ
  • CSVパーサは標準にないから、こちらで用意した google.CSV.parse を使ってね

という仕様になると思われますが、Googleが自社でパーサを書くより、予め用意されているパーサを使う方がコストが安く、安全です。

Re: Ms.yy さん

投稿2019/08/31 06:13

編集2019/08/31 15:55
think49

総合スコア18164

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

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

Ms.yy

2019/08/31 06:46

なるほとです。 ということは、このmap6_1.htmlの中のグーグルマップURL(api)のリクエストで帰ってきたレスポンスがJSON形式でそれをmap6_1.htmlで表示させているという認識でしょうか?
think49

2019/08/31 15:59

親記事に追記しました。 少なくとも、ViewportInfoService.GetViewportInfo は「JavaScriptコード」を受け取って処理を実行していると思います。 map6_1.html では、他にも多くのHTTPリクエストが行われており、その全てを調査していないので、この技法で全てかどうかは分かりません。
Ms.yy

2019/09/01 08:38

ViewportInfoService.GetViewportInfoはJSで受け取ってるならなんとなく流れが掴めた気がします。 親記事もありがとうございます。 難しい単語などあったので改めて確認させて頂きます。
guest

0

apiを使うとxmlやjson形式でレスポンスが返ってきてそれをスクリプトコードで解読すると聞いたのですが、

そうでないタイプのAPIも存在します。Google Maps APIは、「JavaScriptオブジェクトが用意してあって、それを呼び出す」タイプのAPIです。

投稿2019/08/31 05:37

maisumakun

総合スコア145184

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

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

Ms.yy

2019/08/31 05:40

なるほどです。 つまり、json形式など解読するタイプと使わないタイプが存在するのですね
maisumakun

2019/08/31 05:43

APIの定義は、ごくおおざっぱに言えば「プログラムから呼び出して使えるように用意されたもの」ですので、実装のされ方も千差万別です。
Ms.yy

2019/08/31 05:44

そういわれると難しいですね・・・????
guest

0

xmlやjsonというのはあくまで返却するデータの形式の種類にすぎません。
Google Map APIの場合は提供されているgoogle.maps.Mapクラスを利用しています。
第一引数の要素に結果を当てはめてる感じですね。

あとはhttps://maps.googleapis.com/maps/api/jsの処理内容を追ってみればどういうデータをやり取りしているか分かるかもしれません。

投稿2019/08/31 05:37

m.ts10806

総合スコア80850

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

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

Ms.yy

2019/08/31 05:43

難しいですね???? googlemapの場合は予めファイル作成=>作成したファイルへリクエスト=>ファイルに指定されているgooglemapURL(API)から情報を持ってくる=>表示画面へレスポンスということですか?
m.ts10806

2019/08/31 05:54

えっとその「作成したファイル」は何を想定されていますか? GoogleMap自体はオブジェクトが返ってきて何かしら操作があれば都度通信を行い、描画しています。 オブジェクト自体がレスポンスと言ってもいいかもしれません。 リクエストは第2引数に渡されたoption レスポンスが第1引数にあてはめられてるような作りと思います。
Ms.yy

2019/08/31 06:43

作成したファイルは上記のmap6_1.htmlです。 他にも.phpファイルのことを想定してます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問