javascript - 如何在javascript中的函数之外保存变量值

标签 javascript google-maps scope

我是 JavaScript 新手,我试图制作一个简单的 GoogleMaps ,它以我当前的位置为中心,但我发现在保存纬度和经度以将 map 居中时出现问题。

这是我采用的代码:

function initialize() {
 var latitudeCenter;
 var longitudeCenter;
 navigator.geolocation.getCurrentPosition(onSuccess, onError);
 function onSuccess(position){
 console.log(position.coords.latitude, position.coords.longitude);
 latitudeCenter = position.coords.latitude;
 longitudeCenter = position.coords.longitude;
 }
 function onError(error){
 alert('Error en GPS: ' + error);
 }
var mapOptions = {
 zoom: 8,
 center: new google.maps.LatLng(latitudeCenter, longitudeCenter)
};
map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
console.log('latitud: ' + latitudeCenter + ' longitud: ' + longitudeCenter);
}

在第一个控制台日志中,我可以读取当前位置和纬度,因此该方法工作正常,但是当我尝试将其保存在 centerLatitude 和 centerLongitude 中时,它不起作用,它显示未定义。

感谢您的帮助

最佳答案

因此,函数 onSuccessonError 是异步的,因此您不会立即得到答案。因此,您将实际的 map 初始化代码放入 onSuccess

function initialize() {
    var latitudeCenter;
    var longitudeCenter;
    navigator.geolocation.getCurrentPosition(onSuccess, onError);

    function onSuccess(position){
        console.log(position.coords.latitude, position.coords.longitude);
        latitudeCenter = position.coords.latitude;
        longitudeCenter = position.coords.longitude;

        var mapOptions = {
            zoom: 8,
            center: new google.maps.LatLng(latitudeCenter, longitudeCenter)
        };

        map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
    }

    function onError(error){
        alert('Error en GPS: ' + error);
    }


    console.log('latitud: ' + latitudeCenter + ' longitud: ' + longitudeCenter);
}

关于javascript - 如何在javascript中的函数之外保存变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26022727/

相关文章:

javascript - 弹出窗口时焦点关闭按钮

javascript - Firebase 如何动态搜索用户数据下的推送键

javascript - "Error: Module name ' 下划线 ' has not been loaded yet for context: _"有时仅在 Firefox 上出现

html - 在 Google map 叠加层上,如何在 D3 中的 svg 元素之间创建线条

javascript - 吊装和可变范围

javascript - Node.js 和客户端共享相同的脚本

javascript - 在 JavaScript 中如何删除字符串的某些部分?

javascript - If 语句获取无坐标警报

c# - 地址自动补全 API

java - try catch 语句的范围问题