2017-06-06 194 views
0

这里有点遗失:我需要将Mapbox的API从4.xx-beta更新为5.xx以及许多其他内容,例如xml属性的名称,获取访问令牌的方式和位置服务已经改变。我处理了前两项感谢documentation,但似乎无法使LocationServices方法正常工作。 Android Studio告诉我它无法解析诸如getLocationServices()getLastLocation()的方法。下面是我的代码看起来像,这就是使用Mapbox 4.x的工作:Android Studio无法识别的Mapbox方法

package com.example.myapp.interactor; 

import android.location.Location; 

import com.mapbox.mapboxsdk.location.LocationServices; 

import com.example.myapp.MyApp; 

public class GpsInteractor { 

    private LocationServices locationServices; 

    public GpsInteractor() { 
     locationServices = LocationServices.getLocationServices(MyApp.applicationContext()); 
    } 

    public Location lastKnownLocation() { 
     return locationServices.getLastLocation(); 
    } 
} 

所以,按照documentation这里(“获取位置更新”一节),我应该LostLocationEngine类复制到我的项目。当我这样做时,它无法访问LocationRequest.java丢失API类的一些字段,即interval,fastestIntervalsmallestDisplacement。 我发现this问题与真正类似的问题,并试图编译几种Mapbox API的组合,但没有运气。

我错过了什么吗?

+1

你试过这个:LocationEngine locationEngine = LocationSource.getLocationEngine(this);正如他们所说的“在5.0中,我们对开发人员获取用户位置信息的方式进行了重大更改” – Nisarg

+0

不是。这是否意味着我需要使用LocationEngine来代替Mapbox 5.x中的LocationServices? – lidkxx

+0

找到了这个:https://www.mapbox.com/android-sdk/examples/user-location/我可以使用它。如果我完成了这个工作,我会发布一个答案。 – lidkxx

回答

0

如果您尚未修改maps locationSource, LocationEngine locationEngine = LocationSource.getLocationEngine(this)将返回正在使用的默认LOST位置引擎。从5.0.0开始LocationEngine替换LocationServices类。例如,为了获得最后已知用户的位置,你可以这样做:

LocationEngine locationEngine = LocationSource.getLocationEngine(this) 
locationEngine.getLastLocation(); 

您可以在new documentation here更多的LocationEngine。

+0

谢谢!它帮助解决了这个特定的错误,现在正在增加其他一些错误,可能与此无关。 Android有可能因为令牌无效而膨胀我的MapView xml吗? – lidkxx

+0

好吧,从来没有想过,似乎它试图在我的MapActivity而不是我的BaseActivity中获取访问令牌。 – lidkxx

+0

另外值得注意的是:从Mapbox 4.x迁移到Mapbox 5.x我不得不将 更改为在我的Manifest文件中。 – lidkxx