1

저는 한 시간 동안이 문제를 해결해 왔으며, 누락 된 부분이있을 수 있지만 Google API 경로 메서드를 가져올 수 없습니다. ".lat()"또는 ".lng()"를 사용하면됩니다. 그러나 같은 방법으로 경고하면 위도/경도 값이 잘 표시됩니다. 이 함수는 Maps Engine 쿼리의 WHERE 절에서 LINESTRING 섹션을 작성하려고합니다. 내가 다시 받고 있어요정의되지 않은 메서드를 호출 할 수 없습니다. 여전히 경고 (메서드)가 작동합니다.

queryWhere += "ST_DISTANCE(geometry,ST_GEOMFROMTEXT('LINESTRING("; 

    for(x = 0; x <= path.length; x=x+2){ 

     queryWhere += path[x].lng() + " " + path[x].lat(); 

     if(!path[path.length - 1] || !path[path.length - 2]){ 

      queryWhere += ", "; 
       } 
     } 
      queryWhere += ")'))<5000"; 

그것은 완벽하게 정상적으로 작동하고

alert(path[x].lng() + " " + path[x].lat()); 

: 내가 그러나 경우, "catch되지 않는 형식 오류는 정의의 'LNG'방법을 호출 할 수 없습니다."

답변

4

배열의 마지막 요소 만 검사 할 수 있습니다. 지수는 제로를 기반으로, 그래서 마지막 인덱스는 그래서 마지막 패스가 아마 그것을 생각 path[x]

+0

맙소사 나는 심지어 내가 그것을했다 통지를하지 않았다입니다. 얼마나 어리석은 짓이야. 고마워요! –

1

에 대한 정의되지 않은 반환, 단지 less than length

for(x = 0; x < path.length; x=x+2) 

당신은 당신의 코드에서 배열을 오버 슈팅하는에 (length - 1)

변경입니다 귀하의 루프에서 비롯됩니다.

for(x = 0; x <= path.length; x=x+2){ 

여기서, x는 path.length과 같을 수있다. 그러나 0부터 시작하기 때문에 배열의 마지막 인덱스는 path.length-1입니다.

당신은 엄격한 비교 사용할 필요가 :

for(x = 0; x < path.length; x=x+2){ 

또는 길이 감소 :

for(x = 0; x <= path.length-1 ; x=x+2){