我做错了什么?我试图从函数中检索纬度和经度值,但我收到的是未定义的。
var getPos = function() {
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(p)
{
var lat = p.coords.latitude,
lng = p.coords.longitude;
return [lat, lng];
})
}
}
var co = getPos(),
la = co[0],
ln = co[1];
alert(la+ln);
答案 0 :(得分:1)
navigator.geolocation.getCurrentPosition
是异步的,这就是为什么你没有收到任何东西,你可以使用回调并对返回的值进行操作,如下所示:
var getPos = function(callback) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p) {
var rlat = p.coords.latitude,
lng = p.coords.longitude;
callback([lat, lng]);
})
}
};
getPos(function(lat, long) {
// do what you need with those
});
您可以在the docs中了解相关内容:
要获取用户的当前位置,可以调用getCurrentPosition()方法。这将启动异步请求以检测用户的位置,并查询定位硬件以获取最新信息。