Appcelerator Geolocation永远不会在iOS

时间:2017-03-05 23:58:10

标签: ios geolocation appcelerator

我正在使用Appcelerator来提供地理轨道。这在Android上非常有效,但在iOS平台上,我没有从onLocation事件获得速度或标题信息。

我初始化我的GPS:

permissions.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS, function (e) {
    if (e.success && !configuredMonitoring) {
        if (OS_IOS) {
            Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST;
            Ti.Geolocation.distanceFilter = 5;
            Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS;
            Ti.Geolocation.pauseLocationUpdateAutomatically = true;
            Ti.Geolocation.activityType = Ti.Geolocation.ACTIVITYTYPE_OTHER_NAVIGATION;
        }

        if (OS_ANDROID) {
            Ti.Geolocation.Android.addLocationProvider(Ti.Geolocation.Android.createLocationProvider({
                name: Ti.Geolocation.PROVIDER_GPS,
                minUpdateDistance: 10,
                minUpdateTime: 1
            }));
            Ti.Geolocation.Android.addLocationRule(Ti.Geolocation.Android.createLocationRule({
                provider: Ti.Geolocation.PROVIDER_GPS,
                accuracy: 10,
                maxAge: 5000,
                minAge: 1000
            }));
            Ti.Geolocation.Android.addLocationProvider(Ti.Geolocation.Android.createLocationProvider({
                name: Ti.Geolocation.PROVIDER_NETWORK,
                minUpdateDistance: 10,
                minUpdateTime: 1
            }));
            Ti.Geolocation.Android.addLocationRule(Ti.Geolocation.Android.createLocationRule({
                provider: Ti.Geolocation.PROVIDER_NETWORK,
                accuracy: 10,
                maxAge: 5000,
                minAge: 1000
            }));
            Ti.Geolocation.Android.manualMode = true;
        }
}

然后我为暂停的iOS位置更新添加了eventlisteners

if (Ti.Geolocation.locationServicesEnabled){
  Ti.Geolocation.addEventListener('location', onLocation);
  if (OS_IOS) {
    Ti.Geolocation.addEventListener('locationupdatepaused', onLocationupdate);
    Ti.Geolocation.addEventListener('locationupdateresumed', onLocationupdate);
  }
}

我的onLocation功能运行     function onLocation(e){

    if (!e.error) {
        var coords = e.coords;
        console.log(JSON.stringify(e));
    } else {
        console.log('Error!':+JSON.stringify(e))
    }
}

在我看到的返回数据中

{
    "success":true,
    "coords:{
        "timestamp":1488757841662,
        "speed":-1,
        "longitude":173.2793426513672,
        "floor":{"level":0},
        "latitude":-41.274879455566406,
        "accuracy":65,
        "heading":-1,
        "altitude":3.9126133918762207,
        "altitudeAccuracy":10
    },
    "code":0,
    "bubbles":true,
    "type":"location",
    "source":{
        "preferredProvider":null
    },
    "cancelBubble":false
}

在我的速度或航向中,我从未看到除-1以外的任何内容,根据文档:“在iOS上,负值表示标题数据无效。”

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题,并试图弄清楚我们的头发。尝试将Ti.Geolocation.ACCURACY_BEST更改为Ti.Geolocation.ACCURACY_BEST_FOR_NAVIGATION。这为我们修好了。