当我尝试在地点自动完成功能中搜索时,我得到了无法加载搜索结果 日志说
“自动填充时出现错误: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>
答案 0 :(得分:2)
您收到OVER_QUERY_LIMIT消息,因为您尚未在developers console中为项目启用结算。
要使用Android版Places SDK,必须在所有API请求中包含API key,并且必须在每个项目上enable billing。
查看this link了解更多信息和价格。
SKU:基本数据
“基本”类别中的字段包含在“地方信息”请求的基本费用中,不会产生任何额外费用。请求以下任何字段时,都会触发基本数据SKU:ADDRESS,ID,LAT_LNG,NAME,OPENING_HOURS,PHOTO_METADATAS,PLUS_CODE,TYPES,USER_RATINGS_TOTAL,VIEWPORT。
您可以在上面提供的same link中查看价格和其他SKU。
答案 1 :(得分:0)
OVER_QUERY_LIMIT
表示您已超出配额。
主要原因是:
如果超出使用限制,您将获得OVER_QUERY_LIMIT状态码作为响应。
这意味着Web服务将停止提供正常响应,并切换为仅返回状态代码OVER_QUERY_LIMIT,直到再次允许更多使用为止。可能会发生:
- 在几秒钟内,如果由于您的应用程序每秒发送太多请求而收到错误。
- 在接下来的24小时内,如果由于您的应用程序每天发送过多请求而收到错误。每日配额在太平洋时间午夜重置。
您还可以检查以下详细信息:https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits
答案 2 :(得分:0)
如果使用here所述的Places SDK PLACES_API_RATE_LIMIT_EXCEEDED
现已弃用的Play服务版本,则会收到com.google.android.gms:play-services-places
错误:
注意:如果您的Android应用遇到9005 PLACES_API_RATE_LIMIT_EXCEEDED错误,则您可能正在使用Android版Places SDK的已弃用版本。 Android版Places SDK的Google Play服务版本(例如com.google.android.gms:play-services-places)已于2019年1月29日弃用,并于2019年7月29日关闭。新版本适用于Android的Places SDK。我们建议尽快更新到新版本。有关详细信息,请参阅迁移指南。
您必须在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。