我有一个函数返回一个有效地址的坐标但是我有一些困难是它的一个inavlid地址。 我希望得到pos1的空值,如果地理编码无法找到有效的地址,我会在函数中设置。但是我得到了未定义,我知道我做了一些非常愚蠢的事情,但只是无法确定它是什么。
function fnCalculate(){
var pos1=getCordinates(document.getElementById("address1").value));
alert(pos1);
}
function getCordinates(address){
var loc;
if(address){
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
loc=results[0].geometry.location;
}
else {
loc=null;
}
});
}
return loc;
}
答案 0 :(得分:2)
您的问题是,地址直接控制器的回调函数在“getCoordinates()”返回后很久才会运行。您编写的代码结构根本不起作用。不要期望“getCoordinates()”到返回某些东西,而是需要编写它,以便在位置可用时传入另一个要调用的函数。
类似的东西:
function getCoordinates(address, callback) {
if(address){
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
callback( results[0].geometry.location );
}
else {
callback( null );
}
});
}
}
然后,当你调用你的函数时,你传入另一个处理结果的函数:
getCoordinates(document.getElementById("address").value, function( loc ) {
//
// ... do something with "loc" ...
//
});