我有一些代码可以检测位置并返回经度和纬度。它将这些值存储在变量中,然后将这些值添加到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();
答案 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);
}
});