for 루프를 사용하여 android에서 GPX 파일을 구문 분석하고 그 결과 lat 및 long을 Google 정적지도에 적합한 문자열에 넣습니다. 정적지도 api는 ~ 2000 자까지 URL을 허용합니다.for 루프 결과의 크기 제한
내가 원하는 것은 너무 많은 문자를 생성하지 않고 최대 디테일을 얻을 수 있도록 gpx 파일의 항목을 반복하는 것입니다. 예를 들어, 위도와 경도가 10 자이면 가능한 한 200 개의 마커에 근접하게 생성하고 싶습니다. 나는이 작업 코드
List<Location> gpxList = decodeGPX(gpxFile);
for(int i = 0; i < gpxList.size(); i++){
info += ((Location)gpxList.get(i)).getLatitude()
+ ","
+ ((Location)gpxList.get(i)).getLongitude() + "|";
}
허용 마커의 최대 수 (이 예에서는 200)을 기준으로 목록과 분열의 길이를 가지고하는 것이 작업을 수행 할 수있는 확실한 방법으로 시작하고
보장 이것은 정수이며 루프가 반복 할 때 많은 항목을 증가시킵니다. 그러나 목록의 끝 부분에서 한계 밖의 오류가 발생하지 않도록하려면 어떻게해야합니까?
편집
내가 데이터 포인트의 빈도를 줄일보다는 그 의미가 경우 점의 수를 줄이고 자 명확합니다. 왕복 여행을 제공하는 2000 자릿수의 gpx 파일이 있다고 가정 해보십시오. 나는 여행의 시작만을 제공하는 처음 200 점을 나열하는 것보다 정밀도가 떨어지는 전체 여행을 제공하는 200 점의 목록을 만들고 싶습니다.
루프 내부에서 String을 만들고 String 연결을 수행하는 대신 하나의 StringBuilder (루프 이전에 작성)를 사용하는 것이 좋습니다. Solution with Strings는 가비지 컬렉터에 많은 작업을하는 많은 객체를 만듭니다. –
@ BartoszBilicki 전적으로 동의합니다. 간단히 말해 OP의 코드에 대한 대답을 기반으로했습니다. 대체로 StringBuilder를 사용하기 위해 문자열의'+'연산자로 코드를 변경합니다. – Eran
고마워요.하지만 제가 찾고있는 것이 아닙니다. 내 잘못, 이것을 시도하고 수정하기위한 편집을 추가 할 것입니다. – EnduroDave