Статус QUERY_OVER_LIMIT получен как ответ от API карт Google v3 - PullRequest
2 голосов
/ 28 марта 2012

Я использую ваш API в своем приложении для нескольких функций, а именно: - Получение маршрутов до пункта назначения - Получение расстояний до нескольких мест - Получение адресов местоположений путем определения местоположения с помощью маркеров на карте

Сводка приложения(Local-Deals-Now)

Приложение представляет собой бесплатное приложение, позволяющее местным предприятиям, расположенным в Австралии, публиковать предложения / сделки, связанные с их бизнесом.Пользователь может создать бизнес-аккаунт (бесплатно) и указать местоположение своего бизнеса (используя API-интерфейсы Google Maps) и добавлять предложения / сделки в систему по датам и времени.Публичные пользователи / потребители могут затем просмотреть эти предложения (или выполнить поиск по расстоянию, местоположению, дате, ключевым словам и т. Д .: -..... Расстояние до предложений от текущего местоположения пользователя рассчитывается с использованием distancematrix api).

Указанная выше заявка в настоящее время находится в стадии разработки и доступна по номеру http://www.chuli.fclhosting.com/.Проблема возникла при использовании API-интерфейсов матрицы расстояний для расчета расстояний до бизнеса из текущего местоположения пользователя, вошедшего в систему.Я использую API на стороне сервера следующим образом

$curl = curl_init();
        $uri = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=".$originString."&destinations=".$destinationsString."&mode=driving&language&sensor=false";
        die($uri);
        $options = array(
                CURLOPT_URL => $uri,
                CURLOPT_HTTPHEADER => array(),
                CURLOPT_COOKIE => '',
                CURLOPT_RETURNTRANSFER => true
        );
        curl_setopt_array($curl, $options);
        $responseBody = curl_exec($curl);
        $responseHeaders = curl_getinfo($curl);
        $data = $responseBody;
        $responseContentType = $responseHeaders['content_type'];

        if ((strpos($responseContentType, 'json') !== false) || (substr(html_entity_decode(trim($data)), 0, 1) == "{")) {
            $jsonData = json_decode($data, true);
            if (!is_null($jsonData)) {
                $data =$jsonData;
            }
        }

         for ($i = 0; $i < count($data['origin_addresses']); $i++) {
            for ($j = 0; $j < count($data['destination_addresses']); $j++) {

                $from = $data['origin_addresses'][$i];
                $to = $data['destination_addresses'][$j];
                if($data['rows'][$i]['elements'][$j]['status']=="OK" && $data['rows'][$i]['elements'][$j]['distance']['value']<= ($distance*1000)) {
                    $businessDistanceArray[$businesses[$j]->getId()] = $data['rows'][$i]['elements'][$j]['distance']['text'];
                } else {
                    $businessDistanceArray[$businesses[$j]->getId()] = sfConfig::get('app_offer_not_applicable');
                }

            }
        }

С недавнего времени я начал получать предупреждение / сообщение об ошибке OVER_QUERY_LIMIT.После поиска в Google проблемы (ссылка: https://developers.google.com/maps/documentation/javascript/usage), я понял, что вышеупомянутая проблема возникает либо, если - лимит запросов в день превышает 25 000 загрузок карты ИЛИ - путем отправки слишком большого количества запросов в секунду

Заявка, насколько мне известно, не соответствует ни одному из перечисленных выше требований, но все еще получила предупреждение. Пожалуйста, дайте мне знать, что я могу сделать в отношении этой проблемы, чтобы преодолеть эту ошибку

Do iнеобходимо приобрести бизнес-лицензию ИЛИ Так как в настоящее время заявка не является прибыльной, я должен подать заявку на получение Google Планета Земля Outeach ИЛИ Просто продолжить без изменений

Вот пример отправленного запроса:

http://maps.google.com/maps/api/distancematrix/json?origins=-25.198526444487587,133.20029780312507&destinations=-33.767636351789754,147.41606950000005|-33.905755787445024,151.15402221679688|-32.02195365825273,115.90862329062497|-37.79805567326585,145.01495173583987|-36.8839206402564,144.20859858437507|-31.362071510290537,117.42054612812501|-23.609959,143.72078599999998|-37.819317,145.12404889999993|-37.8186394,145.12360620000004|-37.816506,145.11867699999993|-37.815524,145.12131499999998|-30.708111,134.56642599999998&mode=driving&language&sensor=false

Пожалуйста, ознакомьтесь с информацией, приведенной выше. Ваш отзыв будет высоко оценен нами

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Есть два разных ограничения, как говорит доктор Молл.Вы превысили дневной лимит, который позволяет запросить 2500 элементов за 24 часа.Когда это происходит, вы будете получать постоянные ошибки OVER_QUERY_LIMIT до тех пор, пока не истечет это 24-часовое временное окно и ваша квота не обновится.

Другим ограничением, которое нужно искать, является краткосрочный предел в 100 элементов каждые 10 секунд.Когда вы превысите этот лимит, в течение нескольких секунд вы будете сталкиваться с ошибкой OVER_QUERY_LIMIT (то есть до тех пор, пока не откроется 10-секундное окно), а затем вы сможете снова использовать сервис.

Если это пользовательприложение, которое загружает API Google Maps JavaScript и выполняет эти матричные запросы в результате некоторых действий пользователя, JavaScript Distance Matrix Service определенно заслуживает изучения.Лимиты из приложения JavaScript распределяются между пользователями вашего веб-сайта, а не внутренним сервером.

1 голос
/ 28 марта 2012

Предел для Службы DistanceMatrix отличается:

100 elements per query.
100 elements per 10 seconds.
2 500 elements per 24 hour period.

Поэтому, пожалуйста, сначала проверьте, сколько отправителей / пунктов назначения вы запрашиваете. Если значение originins * destination больше 100, вы должны были достичь лимита для запроса и 10 секунд. В этом случае (при условии, что у вас есть только 1 источник), сколько «предприятий» вы запрашиваете?


Edit: Поскольку количество запросов не превышало лимит для запросов / 10 секунд, возможно, вы неоднократно проходите дневной лимит. Ваш запрос возвращает 12 элементов, поэтому вы превысите лимит примерно на 200 запросов в течение 24 часов. Может ли это произойти?

0 голосов
/ 28 марта 2012

Вы можете быть помечены как проходящие тот или иной лимит, если вы используете хостинг совместно с другими пользователями, которые также используют сервисСовместное использование сервера может означать разделение ограничений на службу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...