Превышение обработчика лимита запросов Google Maps API

#javascript #reactjs #google-maps #google-maps-api-3

Вопрос:

Я работаю над созданием обработчиков возможных ошибок Google Maps.

Одним из сценариев, который я хотел обработать, был тот, в котором количество сделанных запросов достигает предела квоты для API JavaScript Google Maps.

Когда предел запроса достигнут, на карте появляется сообщение об ошибке. Сообщение об ошибке гласит: Эта страница не может правильно загрузить карты Google.

Также на консоль выводится сообщение о том, что вы превысили квоту запроса для этого API. Видишь https://developers.google.com/maps/documentation/javascript/error-messages?utm_source=maps_jsamp;utm_medium=degradedamp;utm_campaign=billing#api-key-and-billing-errors

Все работает так, как и ожидалось. В идеале я хотел бы перенаправить пользователя на другую страницу, когда будет достигнут предел запроса; однако я совершенно не понимаю, где бы я мог это сделать. Ниже приведен пример кода, который я использую для загрузки API JavaScript Google Maps.

 import { useState, useEffect } from 'react'
import { Loader } from "@googlemaps/js-api-loader"

function useGoogleMapsApi() {
    const [api, setApi] = useState()
  
    useEffect(() => {
        if ((window as any).google) {
            setApi((window as any).google)
            return
        }
        
        const loader = new Loader({
            apiKey: 'MY_GOOGLE_MAPS_API_KEY',
            version: 'beta',
            libraries: ['places', 'geometry'],
        })
    
        loader
            .load()
            .then(() => {
                setApi((window as any).google)
            })
    }, [])
    
    return api
}

export default useGoogleMapsApi
 

Комментарии:

1. Документированного способа программной обработки этих данных не существует. Однако у вас есть возможность настроить квоты и оповещения (уведомления).

2. Пожалуйста, откройте запрос на функцию для этого: issuetracker.google.com/issues/. … Есть некоторая работа, которая могла бы решить эту проблему в следующем году, и было бы полезно документировать ваш конкретный пример использования!

3. @jpoehnelt Я открою запрос на функцию. Спасибо!

4. @MrUpsidown Я посмотрю на настройку квот и оповещений. Другим возможным способом, на мой взгляд, было бы проанализировать HTML и проверить значение атрибута, эта страница не может правильно загрузить карты Google из HTML. Я мог бы обработать возвращаемое значение чека. Мне придется еще немного подумать над этим подходом, но он не кажется мне идеальным. Спасибо!

5. Конечно, вы могли бы попробовать это, но недокументированные методы всегда не идеальны , так как, если Google что-то изменит, существует риск, что ваш код просто перестанет работать. Рад видеть, что у нас есть инженер по GMP на SO @jpoehnelt. Если вы открываете запрос на функцию, вы должны связать его здесь и связать свой вопрос в FR для продолжения.

Ответ №1:

Ограничение скорости-это количество запросов API, которые могут быть выполнены в течение определенного интервала времени. Согласно странице использования API и выставления счетов Google, существует ограничение в 50 запросов в секунду. Если вы превысите эту сумму, последующие запросы к API завершатся ошибкой с OVER_DAILY_LIMIT OVER_QUERY_LIMIT кодом состояния или, и геокодированные данные не будут возвращены.

Google также может заблокировать ваш доступ к API, если вы неоднократно превысите лимит.

Вот почему я бы посоветовал вам избегать попыток превысить этот лимит запросов, поскольку это может вызвать серьезные проблемы.

Источник: Что происходит, когда вы превышаете ограничение скорости API геокодирования Google?

Комментарии:

1. Это вообще не отвечает на вопрос.