我的项目涉及从包含大约600+ kmz / kml文件的目录中加载多个kmz文件。当用户移动地图并单击按钮以加载相关的kmz文件时,将加载最多5个文件。将进行检查以确保缩放足够大,以便覆盖的区域不会太宽。
要加载相关的kmz / kml文件,我们的想法是,如果kmz / kml的地标甚至部分落在视口内,则会加载该文件。为了快速加载这些kmz / kml文件,我想到了以下步骤:
步骤1:分别提取每个kmz / kml文件的边界并将其存储在文件中。我知道如何以kmz,map.getBounds()
获取视口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
}
答案 0 :(得分:1)
创建一个空的LatLngBounds对象。忽略地图的当前边界。
var bounds = new google.maps.LatLngBounds();
循环浏览KMZ文件的所有内容,使用文件中的各种坐标扩展该边界
bounds.extend(/* your coords */);