我有一个 kml 文件,其中包含许多简单的点地标,每个地标的名称都涵盖美国。我试图找到一种方法来控制他们的标签显示,以便视图在更高的高度不会混乱。我已经看到提到使用区域,但似乎这必须应用于每个地标。我知道必须为此提供一些东西,因为 GE 正在默认图层(即 Populated Places)上执行此操作。此外,当我将标签缩小到足够远时,似乎有一些默认值在起作用,而我的 kml 上没有任何输入。
任何意见表示赞赏!
我有一个 kml 文件,其中包含许多简单的点地标,每个地标的名称都涵盖美国。我试图找到一种方法来控制他们的标签显示,以便视图在更高的高度不会混乱。我已经看到提到使用区域,但似乎这必须应用于每个地标。我知道必须为此提供一些东西,因为 GE 正在默认图层(即 Populated Places)上执行此操作。此外,当我将标签缩小到足够远时,似乎有一些默认值在起作用,而我的 kml 上没有任何输入。
任何意见表示赞赏!
要控制 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>
有同样的问题,我找不到任何快速解决方案,因为我的 .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 地球并右键单击它以选择属性。选择“样式,颜色”选项卡,它应该说明以下内容:
此文件夹的后代不共享相同的样式。如果要强制所有后代共享相同的样式,请单击下面的按钮
单击“共享样式”下方的按钮,它将暂时隐藏所有标签。
亲切的问候,
托马斯