2010-01-13 11 views
2

Google Maps API를 사용하여 여러 사용자의 방향 폴리선을 공통 대상에 표시하는지도를 만들었습니다. 따라서 각 사용자는 자신의 폴리 라인을 동시에지도에 표시합니다.Google Maps API의 방향 제한

문제는 반환되는 폴리 라인 수의 한계가있는 것 같습니다. 약 10 명이 넘는 사용자가있을 경우 폴리 라인 데이터 수신을 중단합니다. (지도에 마지막으로 추가 할 사용자는 폴리 라인을 얻지 못합니다). 로드 함수가 여전히 작동하는 것처럼 보일 수도 있지만 (오류 이벤트 수신기가 호출되지 않음) 폴리 라인 데이터를 얻지 못하거나 맵에 그리지 않습니다.

그려지는 폴리 라인 수는 Google이 한 번에 너무 많은 요청을받는 것을 좋아하지 않는다고 생각하게 할 때마다 약간 씩 다르지만 확실하지는 않습니다.

아무도 아이디어를 얻지 못합니까? 작업량을 줄이거 나 시도하기 위해 주소 문자열 대신 위도와 경도를 제공하려했지만 그려지는 폴리 라인 수에 영향을 미치지 않는 것 같습니다.

답변

2

Google Maps API blog에 따르면 Google에서 스로틀하지 않고 GDirections 요청을 하루에 처리 할 수 ​​있어야합니다. 그러나 구글 맵스 API 그룹에 post이라는 메시지가 있습니다.이 메시지는 속도 인을 기반으로 620 개의 HTTP 오류를 반환하는 별도의 스로틀 메커니즘이 있음을 나타냅니다.

질문에 따라 오류 청취자가 호출되지 않는 것처럼 보입니다. 따라서이 내용이 적합하지 않습니다. 그러나 Google에서이 동작에 대한 공식 설명을 찾지 못했기 때문에 확실하지 않습니다.

GDirections 요청을 버퍼링하고 비율을 낮출 수 있습니까? 이는 요청 속도 조절 메커니즘의 영향을 받는지 확인하기위한 좋은 테스트 일 수 있습니다.

+1

마지막으로 내 요청을 버퍼링하는 방법을 알아 냈고 작동하는 것처럼 보입니다 :) 각 호출 사이에 250 밀리 초를 주면 모든 결과가 표시됩니다. 나는 32 개의 폴리 라인 중에서 32 개가 그려졌다. 나는 더 높은 것을 테스트하지 않았지만 이것은 대부분의 경우에 충분할 것입니다. – Dominic

+1

정말 대단합니다. 다행 이군. – RedBlueThing

+0

정보를 제공해 주신 데 대해 감사 드리며 한 가지 질문 (유치한 행동일지도 모릅니다.) -지도에서 경로 (길 찾기)를 그리는 다른 방법 (영원히 무료 임)입니다. –

1

다음과 같이 간단하게 처리했습니다. 내가 미리 추가하고 싶은 모든 방향의 배열을 만듭니다. 나는 내 방향을 반복하고, 마커를 추가한다 (방향을 그리지 않아도 마커가 있도록 방향과 별도로 마커를 추가한다), 그런 다음 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; 
} 

희망이 도움이 될 것입니다.