2017-06-06 230 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