【问题标题】:How to get bounds of a KMZ or KML file using geoxml3?如何使用 geoxml3 获取 KMZ 或 KML 文件的边界?
【发布时间】:2016-09-15 12:38:26
【问题描述】:

我的项目涉及从包含大约 600 多个 kmz/kml 文件的目录中加载多个 kmz 文件。当用户移动地图并单击按钮以加载相关的 kmz 文件时,最多将加载 5 个文件。将进行检查以确保缩放足够大,以使所覆盖的区域不会太宽。

要加载相关的 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 边界相交,则只会检查合并的边界数组。 p>

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

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 kml geoxml3


    【解决方案1】:

    创建一个空的LatLngBounds 对象。忽略地图的当前边界。

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

    循环遍历 KMZ 文件的所有内容,使用文件中的各种坐标扩展该边界

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

    【讨论】:

    • 感谢@duncan,您的解决方案运行良好。我还发现 geoxml3 对每个 kmz 解析的文档都有一个 bounds 属性。所以我想要的实际上是现成的。 This 示例的源代码中有一行代码:map.fitBounds(geoXmlDoc.bounds);
    • 当然,我所追求的只是geoXmlDoc.bounds位。
    猜你喜欢
    • 2013-02-28
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多