【问题标题】:get google api address value as return from javascript function获取 google api 地址值作为 javascript 函数的返回值
【发布时间】:2015-01-10 10:10:33
【问题描述】:
  • 我正在尝试从 google maps api 获取地址并在函数中返回此地址。我需要更改哪些内容才能显示这些地址?

$(document).ready(function() {
  var lat = 17.4807865;
  var lng = 78.4921649;
  var returnAddress = getAddressFromlatlng(function(backaddr,lat,lng){
     alert(" Inside : "+backaddr)
  });
  alert(returnAddress+" returned address ")
});
function getAddressFromlatlng(callback,lat,lng){
  alert(lat+" : "+lng)
  var geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(lat,lng);
  geocoder.geocode({'latLng': latlng}, function(results, status){   
    alert(results[0].formatted_address)
    callback(results[0].formatted_address);
  });
}

【问题讨论】:

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


【解决方案1】:

这是不可能的,因为函数在值存在之前就返回了。

geocode 调用是异步的,因此您必须异步处理结果。你已经在回调函数中成功显示了值,这就是处理结果的方式。

你可以从getAddressFromlatlng 函数返回一个promise,但这并没有真正改变任何东西。这只是将回调函数包装在一个对象中,以便您可以将结果与调用分开进行异步处理。

【讨论】:

【解决方案2】:

您应该从回调结果中获取地址。解决坐标后,您将调用一个继续处理返回值的函数,因为只有这样您才有返回值。如果您遍历数组,请使用数组索引并在获得所需数据后更新地址字段。或单独处理它们。通过数组向谷歌请求每个项目。一旦响应从谷歌返回,移动到数组中的下一个项目。如果您可以保存索引以便知道响应何时到达,则可以等待多个请求。

var currentIndex = null;
function notifyAddressResolved (address) {
    yourArray[currentIndex].address = address;
    resolveNextAddress();
}
function getAddressFromlatlng(callback, lat, lng){
    var geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(lat, lng);  
    geocoder.geocode({'latLng': latlng}, function (results, status) {           
        callback(results[0].formatted_address);
    });
}
function resolveNextAddress () {
    if (currentIndex == null) {
        currentIndex = 0;
    } else {
        currentIndex++;
    }
    getAddressFromlatlng(notifyAddressResolved, yourArray[currentIndex].lat, yourArray[currentIndex].lng);
}

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多