2

我有一个 kml 文件,其中包含许多简单的点地标,每个地标的名称都涵盖美国。我试图找到一种方法来控制他们的标签显示,以便视图在更高的高度不会混乱。我已经看到提到使用区域,但似乎这必须应用于每个地标。我知道必须为此提供一些东西,因为 GE 正在默认图层(即 Populated Places)上执行此操作。此外,当我将标签缩小到足够远时,似乎有一些默认值在起作用,而我的 kml 上没有任何输入。

任何意见表示赞赏!

4

2 回答 2

3

要控制 KML 中标签的显示,您可以使用您提到的 Regions 和/或带有正常和突出显示的 LabelStyle 的 StyleMap。

如果您捕获到 Google Earth 的 HTTP 流量,您会注意到Borders 和 Labels默认层(以及其他)是使用 Regions 和嵌套 NetworkLinks 实现的 KML 文件。

地区

如果您不想在每个地标上创建一个区域,那么您可以将地标分组到文件夹中,并在文件夹上设置一个区域来控制地标何时可见。正确创建区域需要反复试验。您甚至可能不需要指定最小/最大高度 - 区域尺寸的适当minLodPixels值可能就足够了。

可以在此处找到有关区域的教程。
https://developers.google.com/kml/documentation/regions

样式图

您可能希望创建一个StyleMap,其中普通 Style 的 LabelStyle 的比例为 0 以完全抑制标签或较小的值以简单地减少混乱。

    <Style id="sn_style">
        <LabelStyle>
            <scale>0</scale>
        </LabelStyle>
    </Style>

    <Style id="sh_style">
        <LabelStyle>
            <scale>1.1</scale>
        </LabelStyle>
    </Style>

   <StyleMap id="msn_style">
        <Pair>
            <key>normal</key>
            <styleUrl>#sn_style</styleUrl>
        </Pair>
        <Pair>
            <key>highlight</key>
            <styleUrl>#sh_style</styleUrl>
        </Pair>
    </StyleMap>
于 2012-12-31T18:44:21.463 回答
2

有同样的问题,我找不到任何快速解决方案,因为我的 .kml 包含近 10k POI。所以我所做的是添加常见问题解答提供的代码,所以我的标题看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document><Folder><name>name</name><Style id="hideLabel"><LabelStyle><scale>0</scale></LabelStyle></Style>

我将第一个地标更改为:

Placemark>
    <name>name</name>
    <styleUrl>#hideLabel</styleUrl>
    <ExtendedData><SchemaData schemaUrl="#name">
        <SimpleData name="Name">name</SimpleData>
        <SimpleData name="Latitude">xxxx</SimpleData>
        <SimpleData name="Longitude">yyyy</SimpleData>
    </SchemaData></ExtendedData>
      <Point><coordinates>xxxx,yyyy</coordinates></Point>
  </Placemark>

之后,我将 .kml 加载到 Google 地球并右键单击它以选择属性。选择“样式,颜色”选项卡,它应该说明以下内容:

此文件夹的后代不共享相同的样式。如果要强制所有后代共享相同的样式,请单击下面的按钮

单击“共享样式”下方的按钮,它将暂时隐藏所有标签。

亲切的问候,

托马斯

于 2015-01-14T09:55:04.803 回答