2017-08-30 10 views
1

新しいgoogle.maps.LatLng(緯度、経度)に送信する方法を、関数から緯度経度を取得し、私はアドレスから緯度経度を取得するには、このスクリプトを使用していたJavaScript

var latitude=""; 
var longitude =""; 


function codeAddress(address) { 

    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == 'OK') { 


    latitude = results[0].geometry.location.lat(); 
    longitude = results[0].geometry.location.lng(); 
    // myAfterFunction(); 
    // console.log(this.latitude); 

    } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
    } 
    }); 

} 

var center = new google.maps.LatLng(latitude,longitude); 

私の問題は、私ですカントは、この関数から緯度と経度の値を取得し、私は別の関数

function myAfterFunction(){ 
    console.log(latitude); 
} 

ので、私の質問は、私の関数から緯度と経度を取得する方法である

を使用してみましたか? (私が間違っている可能性が、あなたのコードが問題で何を明確に示す必要があります)あなたのタイトルに基づいて

+0

エラーは何ですか? –

+0

私はconsole.log(緯度)を書く。 console.log(経度);関数の外に、それは未定義未定義 –

答えて

0

に感謝し、あなたが成功した緯度と経度を取得したが、その後のマップにそれを送信するために失敗しているように、それが聞こえます。

問題は、おそらく事実にある:

は、ジオコーディングサービスへのアクセスGoogleマップ APIが外部サーバーへの呼び出しを行う必要があるため、非同期です。そのため、 は、 リクエストの完了時に実行するコールバックメソッドを渡す必要があります。このコールバックメソッドは結果を処理します。 ジオコーダが複数の結果を返すことがあります。もちろん、

var center = new google.maps.LatLng(latitude,longitude); 

しかし:(API docs)は

本の非同期性は、あなたのコールバック関数(function(results, status) {...}))は、応答を待機している間に、あなたも、この行を実行していることを意味し緯度と経度はまだ定義されていませんが、まだ回答がありません。

function codeAddress(address) { 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    console.log("Response recieved"); 
    } 
    }); 

} 
console.log("Tried to use response"); 

最も簡単な解決策は、場所にあるかもしれない:、明示的にこの動作を確認alert()console.log()centerを定義するコードを交換し、コールバック関数内で別のを配置し、最初のトリガものを見るために

コールバック関数内でこの特定の経度と緯度を必要とするコード。応答があり、拡張子が緯度と経度になるまで実行されません。

+0

は、あなたの応答をありがとうございました、しかし、私は持っているので、私は私の機能でVARセンター=新しいgoogle.maps.LatLng(緯度、経度)を置いた場合でも、私は、この後の中央値が必要になりますと長いスクリプト –

+0

これらの変数(経度と緯度)を使用する場合は、コールバックが完了した時点を判断する方法がない限り、コールバック関数内でその変数を使用する必要があります。変数は定義されています)、長いスクリプトをすべて関数に入れ、コールバック関数内からその関数を呼び出すのはかなり簡単です(本質的に、呼び出しに緯度と経度を必要とするすべてのコードを置く視覚的に異なる方法バック機能)。 –

関連する問題