kml - ScreenOverlay 方向
问题描述
我想生成一个动态图例,以便图例中的各个图标可以自由更改而不会影响图例的其余部分,但是我在间距方面遇到了一些问题。现在,我为图例中的每个元素使用单独的屏幕叠加层,并使用百分比在 screenXY 上使用偏移量将它们隔开。这适用于一种屏幕分辨率,但是当您拉伸或压缩 google 地球窗口时,图例看起来很奇怪。我想使用像素来使图例静态地分隔图标,但我无法知道窗口的高度,因此无法猜测我应该在什么高度开始图例。有没有办法嵌套 ScreenOverlays 以便我可以按百分比设置 ScreenOverlay,但是在那个 ScreenOverlay 里面静态地间隔单个图标?是否有另一种不涉及为图例创建单个图像的方法?
我试过简单地嵌套屏幕覆盖,但没有运气。我也无法在单个 ScreenOverlay 中找到有关多个图标的文档。
<ScreenOverlay>
<name>icon1</name>
<Icon>
<href>https://url/here.png</href>
</Icon>
<overlayXY x="0" y="0" xunits="fraction" yunits="fraction" />
<screenXY x=".05" y=".75" xunits="fraction" yunits="fraction" />
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction" />
<size x="0" y="0" xunits="fraction" yunits="fraction" />
</ScreenOverlay>
<ScreenOverlay>
<name>icon2</name>
<Icon>
<href>https://url/here.png</href>
</Icon>
<overlayXY x="0" y="0" xunits="fraction" yunits="fraction" />
<screenXY x=".05" y=".72" xunits="fraction" yunits="fraction" />
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction" />
<size x="0" y="0" xunits="fraction" yunits="fraction" />
</ScreenOverlay>
使用分数有效,但是当用户拉伸或缩小窗口时它不能很好地缩放。它要么挤在一起,要么分散到很远的地方。如果我能从 kml 看出屏幕有多高,像素会更好。
解决方案
如果你想控制多个 ScreenOverlays 的布局和间距,而不是随屏幕大小而变化,那么你需要使用 Pixel 单位进行定位是正确的。没有办法嵌套 ScreenOverlays,但只要每个元素的大小是可预测的,您就应该能够堆叠它们。例如,您可能有 3 个图标,每个 100 像素高,并将它们堆叠在左下角,第一个将位于 x=0,y=0,第二个位于 x=0,y=100,第三个在 x=0, y=200。最好的做法是尽量减少屏幕覆盖,尽量减少你覆盖的地图的多少,所以希望它不会太高以至于大多数屏幕尺寸都应该显示整个东西。
推荐阅读
- java - 如何捕获“无法反序列化对象”。Java(Android)中的异常?
- angular - 尝试使用 forRoot() 为延迟加载的组件延迟加载 Angular Material 相关的自定义模块不起作用
- android - 如何解决:com.android.builder.internal.aapt.v2.Aapt2Exception:Android 资源链接失败
- angular - 如何在将日期对象转换为角度即时类型时忽略时间戳
- jquery - 添加类被验证不触发引导程序 4 验证
- python - Python Pandas:将日期范围设为 -2 +5 年,例如:31 年 -> (29-36) 年
- apache-spark - Spark Streaming 未从 Kafka 主题中读取
- performance - 对于 RediSearch,创建单个索引还是创建多个索引更好?
- node.js - 使用 pm2 的 Typescript 节点应用程序部署过程
- java - 如何获取包含 JSONObject 的列表的大小?