2016-05-26 4 views
0

Ich habe einen Code, der den Standort erkennt und den Längen- und Breitengrad zurückgibt. Es speichert diese Werte in einer Variablen und fügt diese dann zu einer URL hinzu, die dann zum Öffnen einer Webansicht verwendet wird. Das Problem, das ich habe, ist, dass es die App einige Millisekunden dauert, bevor es das Standortdatum hat, und wenn die App dann die Webansicht lädt, erscheinen die Koordinaten als "undefiniert", da die Standortdaten nicht empfangen wurden. Wenn ich eine Warnmeldung erstelle und die URL mit den Koordinaten abgib und dann eine Zeitüberschreitung festlege (1 Millisekunde funktioniert), wird die Warnmeldung die richtige Information ausgeben.Wie kann ich das Laden von Apps stoppen, bevor die aktuelle Position Daten enthält?

Ich habe versucht, eine Zeitüberschreitung auf den Schaltflächen, die die Webviews erstellen, stattdessen, aber das scheint nicht zu funktionieren.

Gibt es einen anderen Ansatz, den ich nehmen könnte? Danke

var coords; 

Titanium.Geolocation.getCurrentPosition(function(e) { 
    if (e.error) { 
     alert('Error: ' + e.error); 
    } else { 
     coords = e.coords.latitude; 
    } 
}); 


setTimeout(function() { 
alert("http://mywebsite.com/api/return-latlong/"+coords); 
}, 500); 


// Keep track of selected button and our button views 
var buttonIdx = 0, 
buttons=[]; 

// Definition of buttons to generate 
var buttonsToCreate = [ 
{icon: '/images/icon1.png', icon2: '/images/icon1.png', name: "Webview1", url: "http://http://mywebsite.com/test.php?"+coords}, 
{icon: '/images/icon1.png', icon2: '/images/icon1.png', name: "Webview2", url: "http://mywebsite.com/page1"}, 
{icon: '/images/icon1.png', icon2: '/images/icon1.png', name: "Webview3", url: "http://mywebsite.com/page2"}, 
]; 



// Open Window 

$.index.open(); 

Antwort

0

Sie können Ihre Website-URL in der Rückrufmethode von getCurrentLocation verwenden. weil man nicht vorhersagen kann, wie viel Zeit es dauern wird, um den aktuellen Standort zu bekommen.

Titanium.Geolocation.getCurrentPosition(function(e) { 
    if (e.error) { 
     alert('Error: ' + e.error); 
    } else { 
     coords = e.coords.latitude; 
     alert("http://mywebsite.com/api/return-latlong/"+coords); 
    } 
}); 
+0

Ich verstehe das, danke. Aber gibt es eine Möglichkeit, das Laden der App zu halten, bis der Ort erkannt wurde? – Rob88991

+0

Ja, Sie können "Titanium.UI.ActivityIndicator" verwenden. Weitere Informationen [Red this] (https://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.ActivityIndicator) –

+0

Das scheint nur ein Lade-GIF zu sein, das ich der App hinzufügen kann? Ich möchte die App tatsächlich anhalten, bis sie den Standort hat. – Rob88991

Verwandte Themen