使用 Google 地点 API 获取当前地点
Get Current Place using Google Place API
我正在编写一个应用程序,试图使用 Google Place API 获取当前位置。但我收到以下错误日志:
E/AndroidRuntime(20212): java.lang.IllegalArgumentException: GoogleApiClient is not configured to use the API required for this call.
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzx.zzb(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzli.zza(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.location.places.internal.zzj.getCurrentPlace(Unknown Source)
E/AndroidRuntime(20212): at ala.youngashram.droid.com.ala.ALaActivity.getCurrentLocation(ALaActivity.java:266)
E/AndroidRuntime(20212): at ala.youngashram.droid.com.ala.ALaActivity.onConnected(ALaActivity.java:149)
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzk.zzh(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzlg.zznU(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzlg.onConnected(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzli.onConnected(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzj$zzg.zzpf(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
任何建议我在这里遗漏了什么,我需要配置什么才能得到这个!
更新的工作代码:感谢@ProblemSlover 的分享link。
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
这是连接请求:
mGoogleApiClient.connect();
并按照以下方式获取位置,连接成功后调用它:
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer placeLikelihoods) {
for (PlaceLikelihood placeLikelihood : placeLikelihoods) {
log(String.format("Place '%s' has likelihood: %g",
placeLikelihood.getPlace().getName(),
placeLikelihood.getLikelihood()));
}
placeLikelihoods.release();
}
});
将此方法添加到您的 activity,并在您的 onCreate 方法中调用它
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new MapCallback())
.addOnConnectionFailedListener(new FailedCallback())
.addApi(LocationServices.API)
.build();
}
请向我们展示您用于配置 GoogleApiClient 的代码。请确保按照入门页面 "Connect to the Places API" 部分中所述的正确方式完成。 https://developers.google.com/places/android-api/start
这是截取的配置:
// Your activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
我正在编写一个应用程序,试图使用 Google Place API 获取当前位置。但我收到以下错误日志:
E/AndroidRuntime(20212): java.lang.IllegalArgumentException: GoogleApiClient is not configured to use the API required for this call.
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzx.zzb(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzli.zza(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.location.places.internal.zzj.getCurrentPlace(Unknown Source)
E/AndroidRuntime(20212): at ala.youngashram.droid.com.ala.ALaActivity.getCurrentLocation(ALaActivity.java:266)
E/AndroidRuntime(20212): at ala.youngashram.droid.com.ala.ALaActivity.onConnected(ALaActivity.java:149)
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzk.zzh(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzlg.zznU(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzlg.onConnected(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.internal.zzli.onConnected(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzj$zzg.zzpf(Unknown Source)
E/AndroidRuntime(20212): at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
任何建议我在这里遗漏了什么,我需要配置什么才能得到这个!
更新的工作代码:感谢@ProblemSlover 的分享link。
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
这是连接请求:
mGoogleApiClient.connect();
并按照以下方式获取位置,连接成功后调用它:
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer placeLikelihoods) {
for (PlaceLikelihood placeLikelihood : placeLikelihoods) {
log(String.format("Place '%s' has likelihood: %g",
placeLikelihood.getPlace().getName(),
placeLikelihood.getLikelihood()));
}
placeLikelihoods.release();
}
});
将此方法添加到您的 activity,并在您的 onCreate 方法中调用它
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new MapCallback())
.addOnConnectionFailedListener(new FailedCallback())
.addApi(LocationServices.API)
.build();
}
请向我们展示您用于配置 GoogleApiClient 的代码。请确保按照入门页面 "Connect to the Places API" 部分中所述的正确方式完成。 https://developers.google.com/places/android-api/start 这是截取的配置:
// Your activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}