无法从Google Map [对象HTMLInputElement]保存坐标变量

时间:2012-07-13 17:12:29

标签: javascript google-maps

<script>
var lat ;
if(true) {
        navigator.geolocation.getCurrentPosition(GetLocation);
        function GetLocation(location) {
            var lat = location.coords.latitude;
        }           
};  

alert(lat);
 </script>  

现在我得到[对象HTMLInputElement],我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

问题是,您在函数中声明了一个具有相同名称的变量,这意味着您有两个变量,一个是全局变量,另一个是本地变量。因此,当您提醒全局变量时,它尚未设置为任何内容。

您需要做的就是从函数中删除var关键字:

// global or other scope

var lat, firstUpdate = false;

if(true) {
    navigator.geolocation.getCurrentPosition(GetLocation);
    function GetLocation(location) {

        // don't use var here, that will make a local variable
        lat = location.coords.latitude;

        // this will run only on the first time we get a location.
        if(firstUpdate == false){
           doSomething();
           firstUpdate = true;
        }

    }           
};  

function doSomething(){
    alert(lat);
}

修改

我编辑了答案,说明一旦找到第一个修复程序后如何确保调用函数。