navigator.geolocation.getcurrentpositionを使用して現在のユーザの場所(緯度/経度)を取得しています。ここに私の関数があります:コントローラのナビゲータからユーザの位置を取得する
function userLocation(){
var response = [];
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p){
// on success
response['latitude'] = p.coords.latitude;
response['longitude'] = p.coords.longitude;
console.log(response);
}, function(e){
// on error
console.log(e);
});
} else {
console.log("Geolocation is not supported by this browser.");
}
return response;
}
それは、常に空の配列を返し、私は応答を返すことはできませんのでgetCurrentPosition関数は非同期呼び出しを行うことを理解しています。
私はGoogleのgeocode apiを使用して場所を取得しようとしましたが、それはユーザーのIPアドレスに基づいており、正確ではありません。
これらの緯度/経度を返す関数が必要です。私のコントローラの関数でgetCurrentPositionからの応答を得る方法はありますか?
グローバル変数 '(var pos = {};)を宣言します。 ) '、その変数を設定し、' promises'を使って非同期ジオロケーション呼び出しから値を返しますか? – RamRaider
この関数は非同期です。それはバックグラウンドで実行され、位置を決定します。それが成功した(または失敗した)ときに、あなたのコードが 'return response;'にヒットしてから数秒後に、あなたが渡した無名関数があなたのresponse.latitudeと.longitudeを設定します。あなたは 'console.log(response)'を持っているところでAJAX呼び出しを実行し、簡単なGET/POSTリクエストを使ってコードをサーバに送る必要があります。 –
@ChrisGはい、コントローラのlat/longを取得する方法ですが、userLocation()関数は何を返しますか?navigator.geolocation.getCurrentPosition()からの応答を待つ方法を教えてください。リクエストが成功したかどうかはどのようにわかりますか? – manoj