2016-09-15 118 views
-1

我的项目涉及从一个包含大约600+ kmz/kml文件的目录加载多个kmz文件。最多5个文件将在用户移动地图时加载,并单击按钮加载相关的kmz文件。将会进行检查以确保变焦足够大,从而覆盖的区域不会太宽。如何使用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步:当用户将地图移动到新位置并单击加载相关的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对每kmz分析文档都有一个bounds属性。所以我想要的其实是现成的。 ** [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'位。 –

相关问题