1

私は緯度と経度の座標値に変換しアドレスするためにジオコーディングAPIを利用しています。私は結果を受け取りますが、の緯度長いは空です。他のSOの投稿によると、ジオコーダのリクエストは非同期であり、Googleはデータを十分に速く返すわけではありません。私はそれが問題なら、私のコードのためにこれを修正する方法を理解していません。GoogleマップのジオコーディングAPiが緯度と経度を返さない

var coords = []; 
var address = '1600 Pennsylvania Ave NW, Washington, DC 20500'; 
var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({'address': address}, function(results, status) { 
     if (status === google.maps.GeocoderStatus.OK) { 
      coords[0] = results[0].geometry.location.lat(); 
      coords[1] = results[0].geometry.location.lng(); 
     } 
     else { 
      coords = 'Could not retrieve coordinates for: ' + address; 
     } 
    }); 
return coords; 

私がよく知られているアドレスを使用しても、私はまだ緯度または経度を取得しません。

結果は、オブジェクト:

enter image description here

は、これは本当に問題ですか私が使用しているコードに何か問題はありますか?これをどうすれば解決できますか?この問題を解決するために、これを使用して終了

+0

非同期コールバック関数から何も返すことはできません。存在するとき/そこにあるデータを使用する必要があります – geocodezip

+1

次に、このドキュメントの要点を示します。https://developers.google.com/maps/documentation/ javacript/geocoding ジオメトリ:{location:LatLng} ...など、返されるすべての情報が必要です。 – JsusSalv

+0

なぜdownvote?これは正当な質問です。問題またはドキュメントを理解できない場合は、質問してください。これは公開されたAPIであり、他のユーザーは適切に対処されていない問題がありました。 – JsusSalv

答えて

1

var request = new XMLHttpRequest(); 
request.open('GET', 'https://maps.googleapis.com/maps/api/geocode/json?address=' + address, false); 
request.send(null); 

けれども、私は、要求の同期を保つために偽に設定する必要がありました。これは廃止予定であると思われますが、私の目的のためにはうまくいくはずです。私は次のようにしてjsonを解析することができます:

var request = new XMLHttpRequest(); 
request.open('GET', 'https://maps.googleapis.com/maps/api/geocode/json?address=' + address, false); 
request.send(null); 

これはいいと思います。ジオコーダーのドキュメントで非同期の問題を書き留めて、より良いソリューションを提供していただければ幸いです。

+0

これは良い考えではありません。匿名関数の最後に(新しい)関数を呼び出す必要があります。 – miguev

+0

共有するコードサンプルがある場合は、その点を証明するようにしてください。上記のコードは、この内部プロジェクトを除いて誰かに公開されているコードベースではないため、うまくいきました。制限と回避策を文書化しました。だから、私たちが前進できるようにするのは良い考えだった。 – JsusSalv

+0

ジオコーディング結果では、これがいくつかあります:https://google-developers.appspot.com/maps/documentation/utils/geocoder/ – miguev

関連する問題