Javascript - 返回变量失败

时间:2010-10-04 06:09:23

标签: javascript variables geolocation

我正在尝试做一些非常简单的事情 - 但它正在努力。 我似乎无法从函数返回变量

var where;
if (navigator.geolocation) {
    where = navigator.geolocation.getCurrentPosition(function (position) {
    // okay we have a placement - BUT only show it if the accuracy is lower than 500 mtrs
    //if (position.coords.accuracy <= 500 ) {
        // put their lat lng into google
        var meLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        var image = "images/map_blue.png";
        var myMarker = new google.maps.Marker({
          position: meLatLng,
          map: map,
          title: "Your location, as provided by your browser",
          icon: image,
          zIndex: 50
        }); 
    //} // end 500 mtrs test
            return meLatLng;        
    });
    alert("A: "+where);
}

我有一个名为where的全局变量,我正在尝试使用navigator.geolocation从浏览器接收的LatLng信息填充它 - 它在地图上绘制用户 - 但是alert(where)总是返回undefined

我做错了什么?

1 个答案:

答案 0 :(得分:3)

简短的回答,没有,

更长的答案,嗯......你看,问题是你的匿名函数看起来会将它的值返回给getCurrentPosition函数,它似乎根本不会返回任何内容。

为了使用您返回的值,您应该使用callBack或处理数据...

只需尝试将return meLatLng替换为customCallBack(meLatLng),然后在该行的某处定义customCallBack

或者,由于您已在全局范围内定义了where,因此可以尝试将return meLatLng替换为where = meLatLng,然后从where = <删除where = navigatior.geoloc.... < / p>

如果我怀疑是对的,那么最后一种方法就不会起作用,因为我认为getCurrentPosition是异步的,这意味着一旦你调用它就会离开应用程序的标准流程。这就是你首先为它提供功能的原因。