如何在getcurrentposition有数据之前停止app加载?

时间:2016-05-26 12:21:54

标签: javascript ios titanium appcelerator

我有一些代码可以检测位置并返回经度和纬度。它将这些值存储在变量中,然后将这些值添加到URL,然后用于打开webview。我遇到的问题是它需要应用程序在它有位置日期之前几毫秒,然后当应用程序加载webview时,由于尚未收到位置数据,坐标将显示为“未定义”。如果我创建一个警报并使用coordiantes回显URL,然后设置超时(1毫秒工作),则警报将打印正确的信息。

我已尝试在创建网页浏览的按钮上设置超时,但这似乎不起作用。

我可以采取另一种方法吗?谢谢

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();

1 个答案:

答案 0 :(得分:0)

您可以在getCurrentLocation的回调方法中使用您的网站网址。因为你无法预测到获得当前位置所需的时间。

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);
    } 
});