2016-09-15 8 views
-1

내 프로젝트에는 약 600+ kmz/kml 파일이 들어있는 디렉토리에서 여러 kmz 파일을로드하는 작업이 포함됩니다. 사용자가지도를 이동하고 버튼을 클릭하여 관련 kmz 파일을로드 할 때 최대 5 개의 파일이로드됩니다. 확대가 너무 커서 적용 범위가 너무 넓지는 않은지 확인하는 검사가 있습니다.geoxml3을 사용하여 KMZ 또는 KML 파일의 경계를 가져 오는 방법은 무엇입니까?

관련 kmz/kml 파일을로드하려면 kmz/kml의 장소 표시가 부분적으로 뷰포트 내에있는 경우 파일이로드되어야합니다. 이 kmz/kml 파일을 빠르게로드하려면 다음 단계를 생각해 보았습니다.

1 단계 : kmz/kml 파일의 각 영역을 별도로 추출하여 파일에 저장합니다. 뷰포트의 경계를 얻는 방법을 알고 있습니다 (map.getBounds()). 특정 다각형은 kmz에 geoXmlDoc.placemarks[i].polygon.bounds입니다. 그러나 모든 점, 선, 다각형을 포함하는 전체 kmz 파일에 대한 경계를 얻는 방법이 있습니까?

모든 kmz/kml 파일의 경계가 포함 된 경계 파일을 생성하려면이 단계를 한 번만 수행하면됩니다. 루프를 통해 개별적으로 각 파일을로드하고 뷰포트의 getBounds를 호출했지만 불행히도 뷰포트가 kmz의 경계에 정확히 맞지 않습니다. 뷰포트는 일반적으로 더 큽니다.

2 단계 : 단계 2 : 사용자가 새 위치로 매핑하고 관련 kmz 파일로드를 클릭하면 뷰포트 경계가 kmz 경계 중 하나와 교차하는 경우 통합 경계 배열 만 검사됩니다.

if (currentBounds.intersects(all_bounds_array[i])) 
{ 
    // load the kmz file for index i 
} 

답변

1

LatLngBounds 개체를 만듭니다. 지도의 현재 경계를 무시하십시오. 파일의 다양한 좌표와 경계

bounds.extend(/* your coords */); 
+1

감사 @duncan이 솔루션이 잘 작동하는지 연장하는 KMZ 파일의 모든 내용을 통해

var bounds = new google.maps.LatLngBounds(); 

루프. 또한 geoxml3에는 각 kmz 구문 분석 된 문서에 대한 경계 속성이 있음을 발견했습니다. 그래서 내가 원하는 것은 실제로 쉽게 구할 수 있습니다. ** [This] (http://www.geocodezip.com/geoxml3_test/v3_geoxml3_kmltest_linktoB.html?type=m&filename=us_states_noPoint.xml) ** 예제 소스에는 작업을 수행하는 줄이 있습니다. map.fitBounds (geoXmlDoc.bounds); –

+0

물론, 내가 한 것은'geoXmlDoc.bounds' 비트뿐입니다. –