我是StackOverflow的新手,所以如果我犯了错误,请对我宽容。
我有问题。当我尝试从另一个函数访问变量时,它会产生“null”。
function initAutocomplete() {
var latitude = 0;
var longitude = 0;
var geocoder = new google.maps.Geocoder();
var address = document.getElementById("geocode").value;
geocoder.geocode({ 'address': address },
function getCoordinates(results, status) {
//if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
}
//}
);
var uluru = {lat: latitude,
lng: longitude};
var map = new google.maps.Map
(document.getElementById('map'),
{
center: uluru,
zoom: 17,
mapTypeId: 'roadmap'
});
}
答案 0 :(得分:1)
uluru
的纬度和经度完全填充在地理编码回调函数中,当函数加载时,它不一定能使它们可用,相反,当这些值可用时,您可以使用回调来设置地图中心
function initAutocomplete() {
var latitude = 0;
var longitude = 0;
var uluru = {lat: latitude, lng: longitude };
var geocoder = new google.maps.Geocoder();
var address = document.getElementById("geocode").value;
geocoder.geocode({'address':address}, function getCoordinates( results, status ) {
if( status == google.maps.GeocoderStatus.OK ) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
map.setCenter( new google.maps.LatLng( latitude,longitude ) ;
}
});
var map = new google.maps.Map(document.getElementById('map'), {
center: uluru,
zoom: 17,
mapTypeId: 'roadmap'
});
}
答案 1 :(得分:0)
访问变量的简单示例:
<script>
var a = 10;
var c;
function aa() {
document.write("func aa ");
var b = 20;
c = b;
document.write(a + b);
}
function bb() {
document.write("func bb ");
document.write(c);
}
aa();
document.write(" ");
bb();
答案 2 :(得分:0)
访问地理编码服务是异步的
这意味着在uluru
对象的初始化后调用您的函数。
您应该在函数uluru
getCoordinates
对象进行初始化