[英]Variable Scope in Javascript GeoLocation not Working
这是一个非常简单的问题,但无法解决,即javascript中的geoScope值的变量作用域不起作用。 这是我的代码:
<script type="text/javascript">
var glat;
var glng;
var test = "Hiii";
function call(){
var lat;
var lng;
var geocoder = new google.maps.Geocoder();
var address = "Delhi";
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
}
glat = lat;
glng = lng;
alert("In: "+glat + glng+ "Test: "+test);
//All Values Displayed Fine..
});
alert("OUT: "+glat + glng+ "Test: "+test);
//glat and glng displayed as undefined..
}
</script>
为什么,OUT警报中的值不显示。 我该如何解决..
提前致谢..
因为geocoder.geocode([object],[callback]);
将一个函数作为第二个参数,该函数被异步调用:因此,直到请求完成且返回函数返回之前,才设置glat
和glng
变量。 您的代码段的基本流程如下:
declare variables
declare function [call]
local variables for function
make async request
alert "out" + glat + glen //Just after request is sent, not after it's completed
[call] returns
//time passes
on successful completion of request://<--refs back to request set in [call]
set variables glat and glng
alert "In"
获取地理位置信息是一个异步过程,您应该通过回调来完成此类工作。
例:
function call(address, callback) {
new google.maps.Geocoder().geocode({
'address': address
}, function (results, status) {
var lat, lng;
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
}
callback(lat, lng);
});
}
//usage:
call("Delhi", function (glat, glng) {
// if you still get undefined, it means the status is not OK.
alert("OUT: " + glat + glng);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.