2013-04-23 4 views
1

가 나는 장소 표시의 총 수의 합을 계산하는 방법을 알고 싶어 http://www.catalinagis.org/foxrecovery주어진 시간에 플러그인에 표시되는 모든 장소 표시를 계산하려면 어떻게합니까?

에서 인구 추정치를 나타내는 수천 개의 아이콘을 포함하는 시간 인식 애니메이션을 생성 한에서 볼 수 있습니다 그 (이 경우, 점) 주어진 시점. . . 시간 기반 쿼리와 같은 것.

인구 추산은 해마다 변동하기 때문에 일부 지점은 소멸되기 전에 짧은 시간 동안 만 지속됩니다. 다른 것들은 시간의 시작부터 끝까지 지속됩니다. 3000 포인트 이상이 있으므로 KML을 하나씩 돌아가고 싶지 않습니다.

나는 매년 인구 추산을 실시한 다음 애니메이션을 더 자연스럽게 보이도록 매월 시간 척도에 따라 다이오프 및 재생산을 시뮬레이션했습니다. 얼마 전 KML을 만들었고 제대로했는지 확인하고 싶습니다. . 또한 시간 슬라이더가 움직일 때 카운트를 표시합니다.

+0

시각적으로 무엇을 의미하는지 명확히 할 수 있습니까? 플러그인에로드되었거나 화면에 현재 렌더링 중임을 나타냅니다. – Fraser

+0

@Fraser 현재 화면에 표시되는 것을 의미합니다. – Ben

답변

0

여전히 '화면에 렌더링'되어 있는지 확실하지 않습니다. 실제로 볼 수 있다면 렌더링 될 위치 표시를 계산하지 않으시겠습니까? 예를 들어 행성).

의미가있는 경우 위치 표시를 계산할 때 문제가 발생하는 경우 현재보기의 경계를 계산 한 다음로드 된 장소 표시가 경계 내에 있고 표시되는지 확인하는 것이 유일한 방법입니다.

KML DOM이 클 경우 시간이 갈수록 전체 DOM을 걷고 DOM의 각 요소를 경계보기로 확인해야하므로 KML DOM이 큰 경우 시간이 오래 걸릴 수 있습니다. api로 배치 함수로 코드를 실행하여 무언가를 얻을 수 있습니다.

당신이 이것을 시험해보고 싶다면 earth-api-utility-library을 살펴 보길 바란다. 그것은 Kml dom과 계산 경계 객체를 트래버스하는 유용한 방법을 가지고있다 - 당신이 그것을 최대한 활용할 수 있어야한다.

EDIT : 렌더링 된 것이 아니라면 훨씬 더 쉽습니다. 여전히 본질적으로 동일한 반복 프로세스입니다. 그러나 이제 뷰 경계를 계산하거나 비교할 필요가 없습니다.

어디서나 전체 눈에 보이는 아이콘을 얻으려면 KML dom을 걸어보고 getVisiblity()을 통해 각 장소의 가시성을 확인하기 만하면됩니다.

var gex = new GEarthExtensions(ge); 

var function countVisiblePlacemarks() { 
    var count = 0; 
    gex.dom.walk({ 
    rootObject: ge, 
    visitCallback: function() { 
    if ('getType' in this && 
     this.getType() == 'KmlPlacemark' && 
     this.getVisibility()) 
     ++count; 
    } 
    }); 
    return count; 
} 

분명히 당신에게 달려있다 countVisiblePlacemarks를 호출하는 방법 - 타이머 등의 API 이벤트, 버튼)에. 결과 카운트로하는 일은 당신에게 달려 있습니다.

위의 예에서 권장하고 사용한 확장 라이브러리를 사용하는 경우 check the developers guide은 매우 유용합니다.

+1

나는 구별을 지금 본다. 예, 볼 수있는 위치 표시의 수를 알고 싶습니다. 그래서 초기 질문에 대한 대답은 주어진 시간에 플러그인에로드되는 위치 표시의 개수를 찾고 있다는 것입니다 (시간 슬라이더 시간이 위치 표시의 시간 범위 내에 있으면 아이콘이로드 된 것으로 간주 됨) 로드되지 않은 것으로 간주됩니다). 혼란에 대해 사과드립니다. – Ben

+0

아, 나는 생각했지만 그걸 상상하고 싶지 않았습니다. 내 편집을 참조하십시오. – Fraser

+0

감사합니다. 도움이됩니다. 제 목표는 kml이 처음로드 될 때와 시간 슬라이더가 움직일 때마다 카운트를 업데이트하는 것입니다. div의 수를 표시합니다 (뷰어의 경우 count는 여우 인구로 변환됩니다). 그러나 제 독서에서 시간 슬라이더를 움직일 때 API 이벤트가 발생하지 않아서 조금 더 어려워졌습니다 (필자 생각). – Ben