私は他の誰かのコードに取り組んでおり、Google マップ API を使用して住所を緯度と経度の座標に変換しようとしています: var start_lng; var end_lat; var end_lng; getLat(開始); getLng(開始);
function getLat(loc) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': loc}, function postcodesearch(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
var lat = results[0].geometry.location.lat();
alert(lat);
return lat;
//alert(start_lng);
}
else {
alert("Error");
}
});
}
function getLng(loc) {
var geocoder_lng = new google.maps.Geocoder();
geocoder_lng.geocode({'address': loc}, function postcodesearch(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
var lng = results[0].geometry.location.lng();
alert(lng);
return lng;
}
else {
alert("Error");
}
});
}
ここまでは順調ですね。以下のコードでは、その緯度と経度を取得し、それらを使用してさまざまな計算を実行します。
alert("DO REST");
var start_p = new google.maps.LatLng(start_lat, start_lng);
alert(start_p);
var end_p = new google.maps.LatLng(end_lat, end_lng);
問題は、緯度と経度を取得する呼び出しが非同期であるため、以下のコードが値を使用する前に値を取得するのを待たないことです。それらは未定義として表示されます。コードの後半を独自の関数に入れて、経度リクエストの最後にそれを呼び出してみましたが、経度の呼び出しが最初に終了した場合にのみ機能しました。$.ajax({ async:false}) も試しましたが、何もしませんでした。AJAX を扱うのはこれが初めてなので、どの方法を使用すればよいかわかりません。