在javascript中同步进行地理定位调用

Rau*_*pin 6 javascript geolocation

我正在开发基于地理定位的应用程序,因此必须首先获取位置,甚至在执行应用程序的其余部分之前也是如此。那么,如何以同步方式转换此模块????

 var geolocation = (function() {
 'use strict';

   var geoposition;

   var options = {
    maximumAge: 1000,
           timeout: 15000,
          enableHighAccuracy: false
};

function _onSuccess (position) {
    console.log('DEVICE POSITION');
    console.log('LAT: ' + position.coords.latitude + ' - LON: ' +  position.coords.longitude);
    geoposition = position
};

function _onError (error) {
    console.log(error)
};

function _getLocation () {
    navigator.geolocation.getCurrentPosition(
        _onSuccess,
        _onError, 
        options
    );
}

return {
    location: _getLocation  
}

}());
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Mat*_*nen 0

我认为你不应该尝试同步进行。只需为地理位置获取器实现某种事件系统即可。这样它可以异步工作,但地理定位会初始化需要地理定位的应用程序或组件。

这是一个简单的例子来说明它是如何工作的:

var callbacks = [];

var onGeolocationReady = function (callback) {
     callbacks.push(callback);
}

function _onSuccess (position) {
     // iterare through each callback and invoce them
}

// and making component
onGeolocationReady(function () {
    // some code here which requires geolocation
});
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。