私のウェブサイトにGoogle Maps v3 APIを実装しようとしています。私は現在、マップを読み込むためにJSスクリプトを使用しています。現在、センター、ズームなどの値はすべてスクリプトにハードコードされています。これらの値をJSON形式のPHPファイルから取得できるようにしたいと考えています。私の現在のスクリプトファイルでは、私はこの順序で私の関数を呼び出す:私はこのスクリプトを呼び出すとき非同期を避けるためにコードを再構築する.getJSON AJAXコール
function initJSON(){
var answerjson = undefined;
var requestAnswer = $.getJSON('URL');
requestAnswer.done(function (data) {
answerjson = data;
});
}
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: //Would like to get data from JSON,
center: //Would like to get data from JSON,
mapTypeId: 'terrain'
});
//Code here about creating a shape outliner, not important
variableDefinedAbove.addListener('click', showArrays);
}
function showArrays(event) {
var vertices = this.getPath();
var contentString = //Would like to get data from JSON ;
infoWindow.setContent(contentString);
infoWindow.setPosition(event.latLng);
infoWindow.open(map);
}
は、Javascriptがデータを引き出すことができるinitJSON前initMap()とSHOWARRAYS()関数を完了します。私は完了したinitJSON()からのデータを他の関数に入れる方法を理解していますが、これらの関数が実行されるときには 'answerjson'は未定義です。他の関数を実行する前にinitJSON()を完了させるために私のプログラムを再構成する方法はありますか?私はおそらく非同期と約束でこれを行うことができると知っていますが、私はそれらの経験はありません。
ですinitMap()が受け取ったデータが正しく動作していることを確認するための値を出力する方法はありますか?今私はvar abc = data;およびconsole.log(abc); initMap()の一番上にあり、それでもundefinedを返します。私はそれを間違っているのですか? – taurus
@ user1234231 - それはうまくいくはずです。あなたのサーバーから戻ってくる 'data'があなたが期待する実際のデータであることを確認できますか?あなたのコンソールを開いて、 "ネットワーク"タブに向かい、AJAXコール(具体的にはレスポンス)を調べてください。 – tymeJV
私はそれを最初のinitJSON()関数に限定することはできませんでした。ありがとう。 – taurus