使用 navigator.geolocation.getCurrentPosition();同步的

Posted

技术标签:

【中文标题】使用 navigator.geolocation.getCurrentPosition();同步的【英文标题】:Using navigator.geolocation.getCurrentPosition(); synchronously 【发布时间】:2012-09-26 21:13:16 【问题描述】:

我有这个函数试图在调用时将纬度和经度作为字符串返回。但是,当我用警报调用它时,它返回未定义。但是当我提醒 data.coords.latitude/longitude 它给了我正确的值。非常感谢任何帮助。

function GetLocation() 
    var jsonLocation;
    navigator.geolocation.getCurrentPosition(function (data) 
        jsonLocation = data.coords.latitude+','+data.coords.longitude;
    );
    return String(jsonLocation);

alert(GetLocation());

【问题讨论】:

【参考方案1】:

getCurrentPosition() 期待回调:

function getLocation(callback) 
    navigator.geolocation.getCurrentPosition(function (data) 
        var jsonLocation = data.coords.latitude+','+data.coords.longitude;
        callback(jsonLocation);
    );


getLocation(alert);

【讨论】:

callback() 未定义..为什么? @Mostafa:因为你没有将一个传递给你的getLocation 电话? 我们可以使用自定义调用函数来代替alert()吗?我返回一个坐标数据对象。如何处理? 当然,您甚至应该在那里使用自定义函数,这就是回调的全部意义所在。但是不,你cannot return from there 谢谢..verrry 有用。【参考方案2】:

我更改了代码,以便回调会在 getCurrentPosition 返回时提醒信息

function RequestLocation() 
            navigator.geolocation.getCurrentPosition(function (data) 
                SendLocation(String(data.coords.latitude + ',' + data.coords.longitude));
            );
        
        function SendLocation(cords)
        
            alert(cords);
        

        RequestLocation();

【讨论】:

以上是关于使用 navigator.geolocation.getCurrentPosition();同步的的主要内容,如果未能解决你的问题,请参考以下文章

navigator.geolocation 给出错误的结果

html5-geolocation : navigator.geolocation.watchPosition 连续回调

带有 navigator.geolocation.watchPosition 的连续标记

Cordova geolocation navigator.geolocation.getCurrentPosition 错误的窗口访问位置

在 Map 和 navigator.geolocation 上使用 Leaflet 的多个事件

传单地图:使用 navigator.geolocation.watchPosition 更新标记?