Ограничение направления API Карт Google - PullRequest
2 голосов
/ 13 января 2010

Я использовал API Карт Google, чтобы создать карту, отображающую полилинии направления для нескольких пользователей в общем пункте назначения. Таким образом, каждый пользователь имеет собственную полилинию, отображаемую на карте одновременно.

Проблема в том, что существует ограничение на количество возвращаемых полилиний. Когда у меня более 10 пользователей, я прекращаю получать полилинии. (последние пользователи, добавленные на карту, не получают ломаную линию). Я мог бы указать, что функция загрузки по-прежнему работает (слушатель события ошибки не вызывается), но я либо не получаю полилинии, либо отказывается отрисовывать карту.

Количество получаемых полилиний каждый раз немного отличается, что заставляет меня думать, что Google просто не нравится получать столько запросов одновременно от одного и того же пользователя, но я не уверен.

У кого-нибудь есть идеи, как это обойти? Я попытался указать широту и долготу вместо адресных строк, чтобы попытаться сократить рабочую нагрузку, но, похоже, это никак не влияет на число отображаемых полилиний.

Ответы [ 2 ]

2 голосов
/ 14 января 2010

Согласно блогу API Карт Google , вы должны иметь возможность отправлять 10 000 GDirections запросов в день без ограничения со стороны Google. Однако я обнаружил сообщение в группе API Карт Google, в котором говорится, что существует отдельный механизм регулирования, который будет возвращать 620 ошибок HTTP на основе скорости , которую вы выполняете.

Судя по вашему вопросу, похоже, что ваш прослушиватель ошибок не вызывается, так что это не совсем подходит. Но я не нашел официального описания этого поведения от Google, поэтому я не уверен.

Можете ли вы буферизовать свои GDirections запросы и снизить частоту их выполнения? Это может быть хорошим тестом, чтобы убедиться, что на вас влияет механизм регулирования скорости запросов.

1 голос
/ 05 марта 2010

Я только что сделал что-то довольно простое, как показано ниже. Я создаю массив всех направлений, которые я хочу добавить заранее. Я перебираю свои направления, добавляю маркер (я добавляю маркер отдельно от направления, чтобы всегда был маркер, даже если направление не удается нарисовать), затем я вызываю функцию setTimeout, чтобы запланировать вызов направления, чтобы Google получить их все сразу. Затем я увеличиваю значение в миллисекундах примерно на 250 (возможно, придется поиграться с этим значением).

var milliseconds = 0;
for(i in directions){
    addMarker(directions[i]); //I place the marker separate to the direction so that there is always a marker even if the direction fails to draw.

    setTimeout( function(){
                  addDirection(directions[directionCounter]); //This is my function that makes the direction request to Google
                  directionCounter++;
                }
                , milliseconds);

    milliseconds += 250;
}

Надеюсь, это поможет.

...