gpt4 book ai didi

javascript - 通过 Google Maps API 操作 KML

转载 作者:行者123 更新时间:2023-11-29 10:52:15 26 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

据我所知,您是对的 - 当您添加 KmlLayer 时,无法访问 Google map 创建的 Javascript 对象。我什至认为它们不存在 - Google Maps v3 通常将图层呈现为在服务器端呈现的叠加图 block ,因此可能没有任何 MarkerPolygon 对象以您期望的方式 ( see the API docs )。

这给您留下了两个选择:

  1. 创建多个 KML 文件,一个用于您要单独显示的每组地标,然后将它们加载为单独的 KML 图层。您可以使用 myKmlLayer.setMap(map)myKmlLayer.setMap(null) 隐藏/显示它们。此处的 Javascript 相对简单,但更难管理您的数据,并且您受限于一个完整 KML 文件的粒度 - 您无法显示/隐藏单个地标。

  2. 在您自己的代码中加载和解析您的 KML,使用生成的数据将标记和多边形加载到 map 上。然后您可以使用对这些对象的引用来支持您的显示/隐藏控件。这可能需要大量工作,尽管您可能会使用 geoxml3 获得一些帮助。 .

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com