2

さて、私は現在、グーグルマップのいくつかの機能を別のファイルに移動しています。他のファイルでは、いくつかのメイン関数search()を作成します。この関数では、他のファイルを含めてこのワークフローを作成します。私が得る問題は、今日まで正常に機能していたgeocoder.geocode()関数であり、何が悪かったのか理解できません。ジオコーダーが作成され、実際に何もせずに関数geocoder.geocode()をステップオーバーします。誰かアイデアがありますか?

これは私のメインfile.jsのビットです:

//set the point.
var latlng = new google.maps.LatLng(55.379, -3.444);
//initialize the google map.
initializeMap(latlng, null, null, null);
//get selected country text from dropdown.
var address = $('#country option:selected').text();
//get entered postcode from textbox.
if ($("#postcode").val() != "") {
    address = $('#postcode').val() + ", " + address;
}
//do a google search and store the result.
var result = googleSearch(address);

アドレスは、「NX5 897、米国」のようになります。そしてこれはfunctionCollection.jsのgoogleSearchです

 function googleSearch(address) {

    var result;

    //setting up a geocoder search.
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ address: address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            result = results[0];
        }
        else {
            alert("Geocode was not successful for the following reason: " + status);
            result = null;
        }
    });
    return result;
}
4

2 に答える 2

1

非同期リクエスト geocoder.geocode() の結果を返しています。コールバックを googleSearch に送信するか、関数内から関数を呼び出すだけです。

   geocoder.geocode({ address: address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
    result = results[0];
}
else {
    alert("Geocode was not successful for the following reason: " + status);
    result = null;
}
somefunction(result); or callback(result)

});

于 2012-10-23T13:06:36.487 に答える
0

ここ

geocoder.geocode({ address: address },

変数をaddress2回渡します。

変数名を他の名前に変更してmyaddressみてください

geocoder.geocode({ address: myaddress },
于 2012-10-23T13:04:46.880 に答える