我正在尝试使用侧边栏中的一系列复选框来构建 map ,以显示标记组。我的KML文件的结构如下(它来自Google Earth):

    <document>
        <folder>
            <placemark>
                <xx />
                <xxx />
            </placemark>
        </folder>
     </document>

我能够加载KML并将其作为图层应用到 map ,一次显示所有标记和多边形等。我不确定如何在KML中操作特定节点,我不确定,也无法在任何地方找到相关文档-通过复选框来显示特定文件夹中的所有地标,或显示所有多边形,但不显示标记或反之亦然。

由于地标数量众多,我宁愿使用Google Earth来维护KML文件,而不是通过javascript / API单独添加它们。使用Fusion Tables会更好吗?

为了使事情更加复杂,在某些情况下,我想显示一个文件夹中的所有地标,另一个文件夹中的一个地标-我想我将使用ExtendedData来实现这一目的,或者按名称显式添加标记。稍后再说...

最佳答案

据我所知,您是对的-添加KmlLayer时,无法访问Google Maps创建的Javascript对象。我什至不认为它们存在-Google Maps v3经常将图层渲染为在服务器端渲染的覆盖图块,因此可能没有您期望的MarkerPolygon对象(see the API docs)。

这给您两个选择:

  • 创建多个KML文件,为要分别显示的每组地标分别创建一个,然后将其作为单独的KML图层加载。您可以使用myKmlLayer.setMap(map)myKmlLayer.setMap(null)隐藏/显示它们。此处的Javascript相对简单,但管理数据较为困难,而且您只能使用一个完整的KML文件的粒度-您无法显示/隐藏单个地标。
  • 使用生成的数据将标记和多边形加载到 map 上,并以自己的代码加载和解析KML。然后,您可以使用对这些对象的引用来支持您的显示/隐藏控件。尽管您可能对geoxml3有所了解,但可能需要做很多工作。

  • 您还可以通过听addoverlay来捕获引用,如this answer to a related question中所述。

    关于javascript - 通过Google Maps API操纵KML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7975567/

    10-12 21:40