我对 Ti.Geolocation 有一个让我发疯的问题。目前只使用IOS平台。目标是在我带着手机四处走动时以尽可能高的准确度获得 GPS 回调。
问题是我从 KitchenSink 中的 geolocation.js 中复制了大部分代码,相关部分如下所示。对我来说看起来不错,但是我得到的行为很奇怪。
当我四处走动时,我只是没有得到定期的 GPS 回调!然而,指南针工作正常,并且一直向我发送回调。我也尝试过不订阅“航向”事件,但 GPS 行为没有改变。
只有一个事件可以触发带有正确数据的 GPS 回调,那就是运行 KitchenSink!切换到 KitchenSink 并返回也会给我一个准确度在 5 到 10 之间的回调。如果我不这样做,我的准确度可以高达 1500-2500(如果我得到一个回调,那就是)。
KitchenSink 似乎工作正常,但我看不到那个应用程序我没有做什么?!?
我已经关闭了手机中的 Wifi,所以它不会打扰。这个问题非常令人沮丧,我现在已经花了三天时间,有人可以帮忙吗?我也尝试过针对不同的 SDK 进行编译(通常是 2.1.1GA,但也低至 1.8.2)。没变。
if (locationServicesAvailable()) {
// APPLICATION LOGIC
ui.init();
Ti.Geolocation.purpose = "Get Lat/Long of your current position";
Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST;
Ti.Geolocation.distanceFilter = 10;
Ti.Geolocation.frequency = 0; /* as fast as possible */
Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS;
if (Ti.Geolocation.hasCompass) {
// TURN OFF ANNOYING COMPASS INTERFERENCE MESSAGE
Ti.Geolocation.showCalibration = false;
// SET THE HEADING FILTER (THIS IS IN DEGREES OF ANGLE CHANGE)
// EVENT WON'T FIRE UNLESS ANGLE CHANGE EXCEEDS THIS VALUE
Ti.Geolocation.headingFilter = 45;
/*
Ti.Geolocation.getCurrentHeading(handleCompass);
Ti.Geolocation.addEventListener('heading', handleCompass);
*/
}
Ti.Geolocation.getCurrentPosition(handlePosition);
Ti.Geolocation.addEventListener('location', handlePosition);
ui.refresh.addEventListener('click', function(e) {
Ti.Geolocation.getCurrentPosition(handlePosition);
});
}