0

我对 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);  
    });
}
4

1 回答 1

0

好的,看来我找到了问题的答案。就像将精度设置为 Ti.Geolocation.ACCURACY_NEAREST_TEN_METERS 一样简单。我正在使用 IOS 平台,如果重要的话,我位于瑞典(在农村)。不知道这个解决方案是否适用于所有人,但我已经看到了对这个问题的引用(http://developer.appcelerator.com/question/130596/strange-behavior-of-the-gps)和解决方案,所以我知道存在。

不知道为什么 ACCURACY_BEST 不起作用,但它不适合我。当我有时间时,我也会测试所有其他设置,但现在至少我可以继续开发。

于 2012-08-31T13:46:44.850 回答