2014-06-16 4 views
2

ESRI 기하학에서 경도 및 위도를 가져 와서 API 호출에 사용되는 긴 문자열에 연결하고 싶습니다. 나는 형상이JSON의 문자열 연결

ESRI 문서 (geometry specs)을 수행하는 방법에 고민하고

개체의 구조를 보여줍니다하지만 내 API 호출은 다음과 같은 형식으로 위도/경도를 필요로 :

long1,lat1,long2,lat2,long3,lat3 ... long1, lat1 

내가해야 할 일은 긴/박쥐를 조금 처리하는 것뿐입니다. ESRI의 문서에서 매우 간단한 예제를 만드는 것은

 MyTest = { 
        "rings": [ 
         [ 
          [-97.06138, 32.837], 
          [-97.06133, 32.836], 
          [-97.06124, 32.834], 
          [-97.06127, 32.832], 
          [-97.06138, 32.837] 
         ] 
        ], 
        "spatialReference": { 
         "wkid": 4326 
        } 
       }; 

     alert(JSON.stringify(MyTest.rings[0])); 

나에게 (마지막 긴/위도로 반복 위도 첫 번째 긴 통지 /) 고리합니다 (경도/위도)

것은 내가없는 것을 줄 것이다 [와]를 벗겨내어 경도와 위도 만있는 문자열을 만드는 방법을 알아 냈습니다. 예를 들어 :

myTest2 = MyTest.rings[0]; // get the longitudes and latitudes 
myTest3 = JSON.stringify(myTest2); 
myTest4 = myTest3.replace("[",""); 

alert(JSON.stringify(myTest2)); 

alert(JSON.stringify(myTest4)); 

다음은 괄호 중 하나를 제거합니다 대체하지만 난 내 프로그래밍 환경은 ColdFusion의 모든 내에서 내가 패턴 주위에 따옴표를 필요로하기 때문에 글로벌이 게시물 stack javascript replace처럼 교체 할 수 없습니다.

제 실수를 지적 할 수 있습니까? 감사 !

+0

단지 (!) 참고로, 유효한 다각형으로 묘사 닫힌 반지가 필요하지 않습니다. 마지막 꼭지점이 첫 번째 꼭지점과 같은 이유입니다. – amenadiel

답변

1

개체가있어 사용하십시오. 문자열 버전으로 재생하지 마십시오.

var coords = MyTest.rings[0]; 
var list = []; 

for (var i = 0; i < coords.length; ++i) 
    { 
    list.push(coords[i][0]); 
    list.push(coords[i][1]); 
    } 

var str = list.join(','); 

// str is now "-97.06138,32.837,-97.06133...(etc.)" 
0

이것은 절대적인 기본 사항이지만 아무 것도 대체 할 필요가 없습니다. []은 자바 스크립트 배열이며 문자열이 아닙니다.

MyTest = { "rings": [...] }; 
var str = MyTest.rings.join(); 

결과 (str에서) 다음과 같습니다 :

MyTest.rings.map(function (r) { return r.join(','); }).join(','); 
// "-97.06138,32.837,-97.06133,32.836,-97.06124,32.834,-97.06127,32.832,-97.06138,32.837" 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join

2

당신은이 (Example) join() 사용이 시도 할 수

-97.06138,32.837, -97.06133,32.836 , -97.06124,32.834, -97.06127,32.832, -97.06138,32.837

+0

'rings'은 중첩 된 배열이기 때문에'join()'이 사용되지 않는다고 생각합니다. 분리 기호 매개 변수는 효과가 없으며'toString()'을 사용하여 동일한 결과를 얻을 수 있습니다. [업데이트 된 예제] (http://jsfiddle.net/8ZSv5/3/)를 참조하십시오. – showdev

+0

@showdev, 네,'toString'도 가능합니다. –