Javascript 如何从地理定位方法中提取坐标

Javascript 如何从地理定位方法中提取坐标,javascript,Javascript,嗨,我是java脚本新手。请帮我从上述方法中找出协调。警报未定义。您应该定义OnSuccess函数,并获取纬度和经度 var alt, lat, long; function onSuccess(position) { lat = position.coords.latitude; long = position.coords.longitude; alt = position.coords

嗨,我是java脚本新手。请帮我从上述方法中找出协调。警报未定义。

您应该定义
OnSuccess
函数,并获取
纬度
经度

        var alt, lat, long;

        function onSuccess(position) {
            lat = position.coords.latitude;
            long = position.coords.longitude;
            alt = position.coords.altitude;

        }
        function onError(error) {
            myApp.alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n', main_title);
        }

        navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: true });

        alert(long + ' ' + lat);

问题在于警报的位置。警报需要进入onSuccess回调方法。下面是JavaScript如何解释代码

  • 它创建变量alt、lat和long
  • 它创建onSuccess和onError函数
  • 它调用navigator.geolocation.getCurrentPosition方法,将onSuccess和onError回调交给它
  • 地理定位是异步进行的
  • 警报长和纬度
  • 地理定位完成并调用onSuccess或onError
  • 如果调用了onSuccess,long和lat值将被设置到相应的变量中
  • 看到问题了吗?当地理定位异步进行时,警报立即发生。地理定位似乎会立即发生,但就代码流而言,它只会在我们的其余代码完成运行后的一段时间内发生

    请尝试以下代码:

    function onSuccess(pos) {
        var crd = pos.coords;
        console.log('Your current position is:');
        console.log(`Latitude : ${crd.latitude}`);
        console.log(`Longitude: ${crd.longitude}`);
    }
    navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: true });
    

    嗨,我只想让alt、long和lat变量成为全局变量。alt、long和lat已经是全局变量了。在异步地理定位代码完成之前,它们都是未定义的。当onSuccess或onError被调用时,我们知道它已完成。因此,这也是执行警报的最佳时机。
    var alt, lat, long;
    
    function onSuccess(position) {
        lat = position.coords.latitude;
        long = position.coords.longitude;
        alt = position.coords.altitude;
    
        allert(long + ', ' + lat);
    }
    function onError(error) {
        myApp.alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n', main_title);
    }
    
    navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: true });