【问题标题】:Android Place API: PlaceDetectionApi.getCurrentPlace() always return no resultsAndroid Place API:PlaceDetectionApi.getCurrentPlace() 始终不返回任何结果
【发布时间】:2015-08-27 18:39:49
【问题描述】:

我已使用 Place API for Android 尝试使用 Places.PlaceDetectionApi.getCurrentPlace() 获取附近的地点。

但是,当我运行该应用并尝试获取附近的地点时,我总是没有得到任何结果。

我确定我已设置权限“ACCESS_FINE_LOCATION”,并启用“Google Place API”,并设置了适当的 API_KEY。

以下是我使用的活动。

public class PlaceLikelihoodActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

private GoogleApiClient mGoogleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_place_likelihood);

    mGoogleApiClient = new GoogleApiClient
            .Builder(this)
            .addApi(LocationServices.API)
            .addApi(Places.GEO_DATA_API)
            .addApi(Places.PLACE_DETECTION_API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
}

//function triggered by a button to get nearby places
public void onPlaceLikelihood(View view) {
    Log.i("Place", "onPlaceLikelihood");
    if (mGoogleApiClient != null) {

        PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
                .getCurrentPlace(mGoogleApiClient, null);

        result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
            @Override
            public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
                Log.i("Place", "onResult");
                if (likelyPlaces.getCount() <= 0) {
                    Toast.makeText(PlaceLikelihoodActivity.this, "No place found", Toast.LENGTH_SHORT).show();
                }
                for (PlaceLikelihood placeLikelihood : likelyPlaces) {
                    Log.i("Place", String.format("Place '%s' has likelihood: %g",
                            placeLikelihood.getPlace().getName(),
                            placeLikelihood.getLikelihood()));
                }
                likelyPlaces.release();
            }
        });
    }
    else{
        Toast.makeText(PlaceLikelihoodActivity.this, "No GoogleApiClient", Toast.LENGTH_SHORT).show();
    }

}


@Override
protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}

@Override
protected void onStop() {
    mGoogleApiClient.disconnect();
    super.onStop();
}

@Override
public void onConnected(Bundle bundle) {
    Toast.makeText(this, "onConnected", Toast.LENGTH_LONG).show();

}

@Override
public void onConnectionSuspended(int i) {
    Toast.makeText(this, "onConnectionSuspended", Toast.LENGTH_LONG).show();
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    Toast.makeText(this, "onConnectionFailed", Toast.LENGTH_LONG).show();
}
}

【问题讨论】:

  • 我有完全相同的问题..它返回空结果

标签: android google-maps google-places-api


【解决方案1】:

尝试调用 mGoogleApiClient.connect();在 onCreate 方法中。除了 onPlaceLikelihood 中的 mGoogleApiClient != null 之外,还可以检查 mGoogleApiClient.isConnected()。

【讨论】:

    【解决方案2】:

    您是否从 Google Developer Console 启用了 API“Google Places API for Android”? 咻

    【讨论】:

      【解决方案3】:

      我想我知道答案了,在模拟器上或者你的手机上,去隐私和安全,打开定位高精度模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-28
        • 2017-12-09
        • 2020-10-03
        相关资源
        最近更新 更多