在谷歌地图api中从纬度和经度递归地查找地址

时间:2016-01-06 07:07:35

标签: javascript jquery google-maps-api-3

我有一些经度和经度,我想找出他们的地址。

function OnSuccess(response) {
    showLatLng(0, JSON.parse(response.d).Table, JSON.parse(response.d).Table.length);
}

JSON.parse(response.d).Table包含结果集。

function showLatLng(index, resultSet, totalLen) {
    var lat = resultSet[index].x;
    var lng = resultSet[index].y;

    var latlng = new google.maps.LatLng(lat, lng);

    new google.maps.Geocoder().geocode({ 'latLng': latlng },
        function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[0]) {

                    var z = " <tr>" +
                        "<td>" + results[0].formatted_address + "</td>" +
                        "</tr>";

                    $("#result").append(z);

                    if (index < totalLen) {
                        showLatLng(index + 1, resultSet, totalLen);
                    }
                }
            }
        });
}

此代码仅运行4到5次,然后停止并且在firebug中没有错误。 请给我一个更好的方法来做到这一点。

编辑: 卢卡斯你是对的。

以前我使用了带超时的循环,如下所示

 $.each(JSON.parse(response.d).Table, function (index, value) {
        setTimeout(function () {
            showLatLng(index , value.x, value.y);
        }, (index + 1) * 7000);
    });

但出于某种原因(因为我认为它正在进行异步调用),它正在跳过一些结果。

1 个答案:

答案 0 :(得分:0)

将纬度和经度值传递给脚本

function GetAddress() {
        var lat = parseFloat(document.getElementById("txtLatitude").value);
        var lng = parseFloat(document.getElementById("txtLongitude").value);
        var latlng = new google.maps.LatLng(lat, lng);
        var geocoder = geocoder = new google.maps.Geocoder();
        geocoder.geocode({ 'latLng': latlng }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[1]) {
                    alert("Location: " + results[1].formatted_address);
                }
            }
        });
    }