2016-12-08 3 views
0

Я новичок в скрипте Кордовы и Java, и я хочу создать простое приложение для мобов, которое, когда вы нажмете на кнопку, получит широту, напечатанную на нем - index.js выглядит следующим образом:using. Then in cordova javascript

var app = { 
    // Application Constructor 
    initialize: function() { 
     document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); 

    }, 

    // deviceready Event Handler 
    // 
    // Bind any cordova events here. Common events are: 
    // 'pause', 'resume', etc. 
    onDeviceReady: function() { 
     this.receivedEvent('deviceready'); 
     document.getElementById("getPosition").addEventListener("click", getGPSPosition); 


    }, 

    // Update DOM on a Received Event 
    receivedEvent: function(id) { 
     var parentElement = document.getElementById(id); 
     var listeningElement = parentElement.querySelector('.listening'); 
     var receivedElement = parentElement.querySelector('.received'); 

     listeningElement.setAttribute('style', 'display:none;'); 
     receivedElement.setAttribute('style', 'display:block;'); 

     console.log('Received Event: ' + id); 
    } 

}; 
app.initialize(); 



function getGPSPosition() 
{ 

    var positionText = ''; 
    getPosition(positionText).then(handletext(positionText),handleerror()); 

} 
function handletext(positionText) 
{ 
    alert('wtf'); 
    document.getElementById("getPosition").innerHTML = positionText; 
    return positionText; 
    //document.getElementById("getPosition").innerHTML = 'ok'; 
} 
function handleerror() 
    { 
     alert('wtf2'); 
     document.getElementById("getPosition").innerHTML = 'error'; 
    } 

кнопка появляется тонкая и расположение прекрасно работает, я просто не могу получить значение кнопки и путаюсь, как ад на «.Затем». Код в geolocation.js находится здесь:

/** 
* Created by johannesgrobler on 06/12/2016. 
*/ 
function getPosition(positionText) 
{ 
    var options = {enableHighAccuracy: true, maximumAge: 3600000}; 

    navigator.geolocation.getCurrentPosition(onSuccess, onError, options); 
    function onSuccess(position){ 
     //return 
     positionText = position.coords.latitude; 
     alert(positionText); 
    } 
    function onError() { 
     positionText = 'GeoLocation error'; 
     alert(positionText); 

    } 
    return positionText; 

} 

помогите пожалуйста, его вождение меня орехами !!

+0

Вы возвращаете измененное значение 'positionText', прежде чем оно будет установлено в асинхронном вызове. –

+0

Спасибо, но можете ли вы выделить, что мне нужно сделать? извините, я полностью застрял. –

+0

Я имею в виду, как установить значение positionText только после того, как возвращается асинхронный вызов? –

ответ

0

Как о чем-то вроде,

function getGPSPosition(){ 
    var positionText = ''; 

    new Promise(function(resolve, reject){ 
    var options = {enableHighAccuracy: true, maximumAge: 3600000}; 

    navigator.geolocation.getCurrentPosition(resolve, reject, options); 

    }) 
    .then(onSuccess, onError) 
    .then(handletext); 

    function onSuccess(position){ 
     positionText = position.coords.latitude; 
     alert(positionText); 
    } 
    function onError() { 
     positionText = 'GeoLocation error'; 
     alert(positionText); 
    } 
    function handletext(positionText) 
    { 
     alert('wtf'); 
     document.getElementById("getPosition").innerHTML = positionText; 
    } 
} 

Я полагаю, что все функции работают.