Я тоже немного поняла.
Оказывается, в Sencha есть ошибка: в Ext.util.Geolocation.parseOption они называют параметр allowHighAccuracy
, но спецификации w3c называют его enableHighAccuracy
.
Я добавил следующий код в мой init приложения, чтобы исправить это:
var parseOptions = function() {
var timeout = this.getTimeout(),
ret = {
maximumAge: this.getMaximumAge(),
// Originally spells *allowHighAccurancy*
enableHighAccuracy: this.getAllowHighAccuracy()
};
//Google doesn't like Infinity
if (timeout !== Infinity) {
ret.timeout = timeout;
}
return ret;
};
Ext.util.Geolocation.override('parseOptions', parseOptions);
Для справки: ошибка была зарегистрирована более года назад и the fix was applied for TOUCH-2804 in a recent build
. Я не знаю, что это значит, но, конечно же, ошибка все еще в 2.0
РЕДАКТИРОВАТЬ: использование вышеупомянутого подхода тоже не работает. Значок GPS будет включаться и выключаться, так как Exts вызывает getCurrentPosition несколько раз, используя setInterval. Причина для этого заключается в том, что The native watchPosition method is currently broken in iOS5
. В моем Android-приложении я отказался от Ext: util.Geolocation и прямо использовал navigator.geolocation.watchPosition. После этого он работал как шарм.