Мой проект включает загрузку нескольких килограммовых файлов из каталога, содержащего около 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
}
Благодаря @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); –
Конечно, то, что я был, было просто бит 'geoXmlDoc.bounds'. –