0

申し訳ありませんが、これが何千回も尋ねられていることは知っていますが、回答を読みましたが、まだ理解できません. 私はJavascriptが初めてで(実際には昨日始めました)、次の問題があります。

非同期関数があり、戻り値が必要ですが、もちろん未定義です。コールバックについて読んだことがありますが、どのように機能するのかわかりません。

機能は次のとおりです。

function getLatLong(address){
      var geo = new google.maps.Geocoder;

      geo.geocode({'address':address},function(results, status){
              if (status == google.maps.GeocoderStatus.OK) {

                var returnedLatLng = [];
                returnedLatLng["lat"] = results[0].geometry.location.lat();
                returnedLatLng["lgn"] = results[0].geometry.location.lng();
                locationTarget = new google.maps.LatLng(returnedLatLng.lat,returnedLatLng.lgn);
                alert(locationTarget);
                return locationTarget;
              } else {
                alert("Geocode was not successful for the following reason: " + status);
              }

       });
  }

この関数を initialize() 関数から呼び出しており、次のようにしています。

var location = getLatLong(address);

さて、私の質問は、ここでコールバックがどのように役立つでしょうか? 可能であれば..どのコードを使用すればよいですか?

どうもありがとう!(これは私の最初の最初の質問です!)

4

2 に答える 2

0

開始する最も基本的な解決策は、場所をグローバルに定義し、既に持っているコールバックに応答することです。

var location;
function getLatLong(address){
      var geo = new google.maps.Geocoder;

      geo.geocode({'address':address},function(results, status){
              if (status == google.maps.GeocoderStatus.OK) {

                var returnedLatLng = [];
                returnedLatLng["lat"] = results[0].geometry.location.lat();
                returnedLatLng["lgn"] = results[0].geometry.location.lng();
                locationTarget = new google.maps.LatLng(returnedLatLng.lat,returnedLatLng.lgn);
                alert(locationTarget);
                location = locationTarget;
                // Additional logic you are using the location for
                // After this point your location is defined.
              } else {
                alert("Geocode was not successful for the following reason: " + status);
              }

       });
  }
 getLatLong(address)

したがって、基本的にロジックは、位置を返すこのメソッドの呼び出しではなく、geocode関数コールバックが呼び出された後に発生する何かに基づいている必要があります。

于 2013-10-11T13:51:02.553 に答える