我正在尝试做一些非常简单的事情 - 但它正在努力。 我似乎无法从函数返回变量
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
我做错了什么?
答案 0 :(得分:3)
简短的回答,没有,
更长的答案,嗯......你看,问题是你的匿名函数看起来会将它的值返回给getCurrentPosition
函数,它似乎根本不会返回任何内容。
为了使用您返回的值,您应该使用callBack或处理数据...
只需尝试将return meLatLng
替换为customCallBack(meLatLng)
,然后在该行的某处定义customCallBack
。
或者,由于您已在全局范围内定义了where
,因此可以尝试将return meLatLng
替换为where = meLatLng
,然后从where =
<删除where = navigatior.geoloc....
< / p>
如果我怀疑是对的,那么最后一种方法就不会起作用,因为我认为getCurrentPosition
是异步的,这意味着一旦你调用它就会离开应用程序的标准流程。这就是你首先为它提供功能的原因。