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 },

您将变量传递address两次。

将变量名称更改为其他名称,例如myaddress并尝试

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