2016-09-15 2 views
-1

Мой проект включает загрузку нескольких килограммовых файлов из каталога, содержащего около 600 + kmz/kml файлов. Максимальное количество 5 файлов будет загружено, когда пользователь перемещает карту и нажимает кнопку для загрузки связанных файлов kmz. Будет проверка, чтобы обеспечить, чтобы масштаб был достаточно большим, чтобы покрытая область была не слишком широкой.Как получить границы файла KMZ или KML с помощью geoxml3?

Для загрузки соответствующего файла kmz/kml идея состоит в том, что если метки с kmz/kml падают даже частично в окне просмотра, тогда файл загружается. Чтобы быстро загрузить эти файлы kmz/kml, я подумал о следующих этапах:

Шаг 1: Извлеките границы каждого файла kmz/kml отдельно и сохраните его в файле. Я знаю, как получить границы области просмотра, map.getBounds() и конкретные полигоны в kmz, geoXmlDoc.placemarks[i].polygon.bounds. Но есть ли способ получить границы для всего файла kmz, который включает в себя все точки, линии, полигоны?

Я понимаю, что этот шаг нужно выполнить всего один раз, чтобы создать файл границ, содержащий все границы файлов kmz/kml. Я попытался загрузить каждый файл отдельно через цикл и вызвать getBounds из области просмотра, но, к сожалению, окно просмотра точно не соответствует границам kmz. Видовой экран обычно больше.

Шаг 2: Когда пользователь перемещает карту в новое место и нажимает на загрузку соответствующих файлов kmz, тогда будет проверяться только массив консолидированных границ, если границы видового экрана пересекаются с любой из границ kmz.

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

ответ

1

Создать пустой объект LatLngBounds. Игнорируйте текущие границы карты.

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

Петля через все содержимое файла KMZ, расширяя границы, которые с различными координатами в файле

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

Благодаря @duncan, ваше решение хорошо работает. Я также обнаружил, что geoxml3 имеет свойство bounds для каждого обработанного документа kmz. Так что я хочу на самом деле легкодоступно. ** [Это] (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'. –

Смежные вопросы