以下是我正在使用的内容: getLocation('123 Foobar Ln');
function getLocation(location) {
console.log(location); // prints 123 Foobar Ln
getLocationData(location, function(gotLocation) {
console.log('hello?'); // this doesn't print
return gotLocation;
});
}
function getLocationData(location, callback) {
geocoder.geocode(location, function(err, res) {
if (res[0] != undefined) {
geoaddress = (res[0].formattedAddress);
addressmessage = 'Formatted Address: ' + geoaddress;
callback(addressmessage);
} else {
geocoder.geocode(cleanedAddress, function(err, res) {
addressmessage = 'null';
if (res[0] != undefined) {
geoaddress = (res[0].formattedAddress);
addressmessage = 'Formatted Address: ' + geoaddress;
callback(addressmessage);
} else {
addressmessage = 'Address could not be found: ' + location;
callback(addressmessage);
}
});
}
});
}
我很难让getLocation对来自getLocationData的回调做任何事情。
我运行以下内容时获得的唯一输出是:123 Foobar Ln
有人能指出我在这里做错了吗?
答案 0 :(得分:0)
这里最让你失望的错误可能是你正在搜索0
的索引res
而res
是一个对象。现在你的回调使用已经修复,除了
cleanedaddress
尚未定义,但我只是理所当然地认为它必须位于代码中更高的位置。 123 Foobar Lane
是一个可能不存在的地址,但也许您只是将其用于帖子。 简化的工作版本:
var geocoder = require('google-geocoding');
//https://www.npmjs.com/package/google-geocoding
function getLocation(location) {
getLocationData(location, function(latLong) {
console.log('latLong:', latLong);
});
}
function getLocationData(location, callback) {
geocoder.geocode(location, function(err, res) {
if (err){
console.log('geocode error', err);
}else{
callback(res);
}
});
}
getLocation('1060 W Addison St, Chicago, IL 60613');
// => latLong: { lat: 41.9474536, lng: -87.6561341 }
希望这有帮助。