自动完成时放置自动完成错误:OVER_QUERY_LIMIT

Place Autocomplete Error while autocompleting: OVER_QUERY_LIMIT

当我尝试在地点自动完成中搜索时,我得到了无法加载搜索结果 并且日志显示

"Error while autocompleting: OVER_QUERY_LIMIT"

我已经启用https://console.cloud.google.com/ API 键效果很好。

Java代码

    String apiKey = "MY API KEY";
    private RadioGroup mRadioGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_costumer_map);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);

        Places.initialize(getApplicationContext(), apiKey);

        PlacesClient placesClient = Places.createClient(this);
          // Initialize the AutocompleteSupportFragment.
        AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment)
                getSupportFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

        // Specify the types of place data to return.
        autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));

        // Set up a PlaceSelectionListener to handle the response.
        autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
            @Override
            public void onPlaceSelected(Place place) {
                destination = place.getName().toString();
                destinationLatLng = place.getLatLng();

                Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
            }

            @Override
            public void onError(Status status) {
                Log.e(TAG, "onError: " + status);
            }
        });

XML代码

       <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        android:layout_margin="20sp">

        <fragment
            android:id="@+id/place_autocomplete_fragment"
            android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </android.support.v7.widget.CardView>

OVER_QUERY_LIMIT 表示您已超出配额。 主要原因是:

If you exceed the usage limits you will get an OVER_QUERY_LIMIT status code as a response.

This means that the web service will stop providing normal responses and switch to returning only status code OVER_QUERY_LIMIT until more usage is allowed again. This can happen:

  1. Within a few seconds, if the error was received because your application sent too many requests per second.
  2. Within the next 24 hours, if the error was received because your application sent too many requests per day. The daily quotas are reset at midnight, Pacific Time.

您还可以查看此以获取更多详细信息:https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits

您收到 OVER_QUERY_LIMIT 消息 因为您尚未在 developers console 中为您的项目 启用计费。

To use the Places SDK for Android, you must include an API key with all API requests and you must enable billing on each of your projects.

查看 this link 了解更多信息和价格。

SKU:基本数据

Fields in the Basic category are included in the base cost of the Places request, and do not result in any additional charge. The Basic Data SKU is triggered when any of these fields are requested: ADDRESS, ID, LAT_LNG, NAME, OPENING_HOURS, PHOTO_METADATAS, PLUS_CODE, TYPES, USER_RATINGS_TOTAL, VIEWPORT.

您可以在上面给出的 same link 中查看定价和其他 SKU。

如果您使用现已弃用的 Play 服务版本的 Places SDK com.google.android.gms:play-services-places,您将收到 PLACES_API_RATE_LIMIT_EXCEEDED 错误,如 here:

所述

Notice: If your Android app is experiencing 9005 PLACES_API_RATE_LIMIT_EXCEEDED errors, you may be using a deprecated version of the Places SDK for Android. The Google Play Services version of the Places SDK for Android (for example com.google.android.gms:play-services- places) was deprecated as of January 29, 2019, and was turned off on July 29, 2019. A new version of the Places SDK for Android is now available. We recommend updating to the new version as soon as possible. For details, see the migration guide.

您必须在 build.gradle 中替换以下行:

implementation 'com.google.android.gms:play-services-places:<VERSION>'

有:

implementation 'com.google.android.libraries.places:places:2.2.0'

请注意,版本 2 或更高版本需要 androidx。在撰写本文时,不需要 androidx 的最新版本是 1.1.0。