GoogleMapAPIを使用してAndroidアプリを開発しました。ローカルプロバイダーの自宅のインターネットを使用している場合、アプリは実行されています。
しかし、インターネットをAT&Tに変更すると、次のエラーが発生します。
場所のエラー-Googleの場所に対する申し訳ありませんがクエリの制限に達しました。
なぜこれが起こっているのか分かりません。2つのインターネット接続に違いはありますか?
ありがとう
あなたはグーグルマップAPIの使用量を超えていると思います。google map APIの使用量を超えると、応答ステータスコードはOVER_QUERY_LIMITになります。これと同じように実行していると思います。
protected void onPostExecute(String file_url) {
// dismiss the dialog after getting all products
pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed Places into LISTVIEW
* */
// Get json response status
String status = nearPlaces.status;
// Check for all possible status
if(status.equals("OK")){
// Successfully got places details
if (nearPlaces.results != null) {
// loop through each place
for (Place p : nearPlaces.results) {
HashMap<String, String> map = new HashMap<String, String>();
// Place reference won't display in listview - it will be hidden
// Place reference is used to get "place full details"
map.put(KEY_REFERENCE, p.reference);
// Place name
map.put(KEY_NAME, p.name);
// adding HashMap to ArrayList
placesListItems.add(map);
}
// list adapter
ListAdapter adapter = new SimpleAdapter(MainActivity.this, placesListItems,
R.layout.list_item,
new String[] { KEY_REFERENCE, KEY_NAME}, new int[] {
R.id.reference, R.id.name });
// Adding data into listview
lv.setAdapter(adapter);
}
}
else if(status.equals("ZERO_RESULTS")){
// Zero results found
alert.showAlertDialog(MainActivity.this, "Near Places",
"Sorry no places found. Try to change the types of places",
false);
}
else if(status.equals("UNKNOWN_ERROR"))
{
alert.showAlertDialog(MainActivity.this, "Places Error",
"Sorry unknown error occured.",
false);
}
else if(status.equals("OVER_QUERY_LIMIT"))
{
alert.showAlertDialog(MainActivity.this, "Places Error",
"Sorry query limit to google places is reached",
false);
}
else if(status.equals("REQUEST_DENIED"))
{
alert.showAlertDialog(MainActivity.this, "Places Error",
"Sorry error occured. Request is denied",
false);
}
else if(status.equals("INVALID_REQUEST"))
{
alert.showAlertDialog(MainActivity.this, "Places Error",
"Sorry error occured. Invalid Request",
false);
}
else
{
alert.showAlertDialog(MainActivity.this, "Places Error",
"Sorry error occured.",
false);
}
}
});
}
Androidによるこのサンプルコードでわかるように、 HiveはGoogle Places APIから応答を取得し、その後それを確認します。ステータスがOVER_QUERY_LIMITの場合、エラーは「PlacesError申し訳ありませんがGooglePlacesへのクエリ制限に達しました」と表示されます。あなたはこのセクションでそれを見ることができます
else if(status.equals("OVER_QUERY_LIMIT"))
{
alert.showAlertDialog(MainActivity.this, "Places Error",
"Sorry query limit to google places is reached",
false);
}
次の方法で、Google MapsAPIWebサービスの使用制限を超えることができます。
1日に送信するリクエストが多すぎます。リクエストの送信が速すぎます。つまり、1秒あたりのリクエストが多すぎます。リクエストの送信が速すぎて長すぎるか、Webサービスを悪用している。Elevation APIのリクエストごとのポイントなど、他の使用制限を超えています。
上記の問題は、次の2つのアプローチを組み合わせることで解決できます。
Webサービスをより効率的に使用するようにアプリケーションを最適化することにより、使用量を削減します。可能であれば、Maps API for Businessライセンスの追加のアローワンスを購入して、使用制限を増やします。
詳細については、こちらをご覧ください-> Google Places API
ご不明な点がございましたら、コメント欄でお気軽にお問い合わせください:)