我在position
函数中定义geocode
时遇到了一些问题。
我在我的函数中得到了正确的结果,但我不能在函数之外使用它。
var position;
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': row.Address + ' ' + row.Postal_Code + ' ' + row.City + ' ,' + row.Country
}, function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
position = results[0].geometry.location; // console.log(position) // correct result
}
});
的console.log(结果); //未定义
答案 0 :(得分:1)
除非您没有在地理编码中运行您的函数,否则该值不会分配给位置变量。
var position;
function forPosition(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
position = results[0].geometry.location;
}
forPosition();// now position is set to results[0].geometry.location;
您有一个匿名函数,应该运行该函数以便为变量赋值。
或者只是在下面的例子中
var greeting = "Hello";
function func(){
greeting = "hi"
alert(greeting)
}
//func() //uncommenting func() will result in alerting two times 'hi'.
alert(greeting)
运行函数func后,它将greeting变量设置为'hi'并警告函数内的变量,然后在函数范围之外的警报将再次警告greeting变量。除非函数运行,问候语始终设置为“Hello”。
答案 1 :(得分:-1)
您已在回调函数中分配了position
变量,现在您正尝试将result
变量输出到控制台。此变量从未被声明或分配。它肯定会返回undefined
。
应该有效:
console.log(position);
<强>更新强>
好的,现在,稍微纠正一下 - google.maps.Geocoder
是异步方法。 OP在帖子的任何地方都没有提到它 - 我必须找到这个库,下载它,研究它的API并自己学习。
在我看来,所有用户都没有必要知道每个第三方库,在这种情况下,我是对的 - 即使方法是同步的,这个代码也会输出undefined
输出未定义的变量。