从 javascript 函数中获取 google api 地址值作为 return
get google api address value as return from javascript function
- 我正在尝试从 google 地图中获取地址 api 和 return function.What 中的这个地址 我是否需要更改才能显示这些地址?
$(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);
});
}
这是不可能的,因为函数 returns 在该值存在之前。
geocode
调用是异步的,因此您必须异步处理结果。您已经在回调函数中成功显示了值,这是处理结果的方式。
您可以 return 来自 getAddressFromlatlng
函数的承诺,但这并没有真正改变任何东西。这只是将回调函数包装在一个对象中,这样您就可以独立于调用对结果进行异步处理。
您应该从回调的结果中获取地址。解析坐标后,您将调用一个继续处理 returned 值的函数,因为只有这样您才能获得 return 值。如果您遍历数组,请使用数组索引并在获得所需数据后更新地址字段。或单独处理它们。遍历数组,为每个项目向 google 发出请求。一旦响应从 google 返回,移动到数组中的下一个项目。如果您可以保存索引,以便在响应到达时知道它,那么就可以等待多个请求。
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);
}
- 我正在尝试从 google 地图中获取地址 api 和 return function.What 中的这个地址 我是否需要更改才能显示这些地址?
$(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);
});
}
这是不可能的,因为函数 returns 在该值存在之前。
geocode
调用是异步的,因此您必须异步处理结果。您已经在回调函数中成功显示了值,这是处理结果的方式。
您可以 return 来自 getAddressFromlatlng
函数的承诺,但这并没有真正改变任何东西。这只是将回调函数包装在一个对象中,这样您就可以独立于调用对结果进行异步处理。
您应该从回调的结果中获取地址。解析坐标后,您将调用一个继续处理 returned 值的函数,因为只有这样您才能获得 return 值。如果您遍历数组,请使用数组索引并在获得所需数据后更新地址字段。或单独处理它们。遍历数组,为每个项目向 google 发出请求。一旦响应从 google 返回,移动到数组中的下一个项目。如果您可以保存索引,以便在响应到达时知道它,那么就可以等待多个请求。
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);
}