2010-01-13 2 views
2

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

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

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

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

ответ

2

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

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

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

+1

Наконец-то выяснилось, как буферизировать мои запросы, и кажется, что это работает :) Если я дам 250 миллисекунд между каждым вызовом, я, кажется, получаю все результаты. Я получил 32 из 32 полилиний. Я не тестировал ничего выше, но для большинства случаев это должно быть достаточно хорошим. – Dominic

+1

Это потрясающе. Рад, что ты разобрался. – RedBlueThing

+0

спасибо за информацию, я хотел бы задать вам один вопрос (это может быть ребяческий) - это любой другой способ рисования маршрутов (направлений) на карте (что будет БЕСПЛАТНО навсегда). –

1

Я просто сделал что-то довольно простое, как показано ниже. Я создаю массив всех направлений, которые я хочу добавить заранее. Я прохожу по моим направлениям, добавляю маркер (я добавляю маркер отдельно в направлении, чтобы всегда был маркер, даже если направление не удалось нарисовать), затем я вызываю функцию setTimeout, чтобы запланировать направление, чтобы Google не " t получить их все сразу. Затем я увеличиваю значение миллисекунд примерно на 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; 
} 

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

Смежные вопросы