我有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);
});
}
答案 0 :(得分:0)
好吧,好像我找到了问题的答案。它就像设置Ti.Geolocation.ACCURACY_NEAREST_TEN_METERS的精度一样简单。我正在使用IOS平台,如果重要的话,我位于瑞典(在乡下)。不知道这个解决方案是否适用于所有人,但我已经看到了对这个问题的引用(http://developer.appcelerator.com/question/130596/strange-behavior-of-the-gps)和解决方案所以我知道它存在。
不知道为什么ACCURACY_BEST不起作用,但它不适合我。当我得到时间时,我也会测试所有其他设置但现在至少我可以继续开发。