Текущее местоположение - это вызов API, который точка опоры использует для получения текущей информации GPS при вызове в приложении android.
Хорошо, поэтому это черный ящик, который возвращает местоположение, если доступно, в противном случае - нет. Тогда все, что вы можете сделать, это опросить и надеяться, что вы в конечном итоге получите значение.
ON('load-record', function (event) {
var attempts = 0;
var updateLocationInfo = function () {
// get the current device location
var location = CURRENTLOCATION();
if (location) {
// format the display of the location data
var message = [
'Latitude: ' + location.latitude,
'Longitude: ' + location.longitude
].join('\n');
// set the label property of the label on the form
SETLABEL('gps_info', 'GPS Coordinates');
SETVALUE('gps_info', location)
} else if (attempts++ < 500) { // try it for approx 5s
SETLABEL('gps_info', 'GPS Coordinates');
SETTIMEOUT(updateLocationInfo, 10);
} else {
// you have to know when it's time to stop.
// sry, didn't get the value
// display your special message
}
};
// go ahead and try it now...
updateLocationInfo();
});
Чуть более сложный подход может быть:
ON('load-record', function (event) {
// try to get the value for 5 seconds
var endTime = Date.now() + 5000;
// start with a 10ms interval
var delay = 10;
var updateLocationInfo = function () {
if (location) {
// ...
} else if (Date.now() < endTime) {
// slow down the polling, but cap it at max. 500ms interval
SETTIMEOUT(updateLocationInfo, Math.min(delay *= 1.15, 500));
} else {
// ...
}
}
updateLocationInfo();
})
Таким образом вы не опрашиваете всего 5 секунд каждые 10 мс. Начните с нетерпением в надежде, что вы быстро добьетесь успеха, но не спешите, чтобы не создавать такой большой нагрузки, если это займет немного больше времени.