如何在谷歌地图中覆盖KML颜色

How to override KML colors in Google Map?

本文关键字:覆盖 KML 颜色 谷歌地图      更新时间:2023-09-26

我正在通过Google Map的V3 API加载KML文件。正在使用 KML 文件中的颜色,但我想用我自己的颜色覆盖它。我实际上想对整个跟踪使用纯色。有没有办法做到这一点?

KML 颜色基于直接在 KML 中定义的Style API 文档标签,或者使用对外部 KML 样式文件的引用(类似于 CSS(。我们使用外部样式文件,以便可以将样式应用于多个 KML 文件。

这意味着在我们的 KML 数据文件中,您将找到如下条目:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
    <name>Country Borders</name>
    <open>1</open>
    <Placemark>
        <name>Russian Federation</name>
        <styleUrl>kml-styles.kml#red</styleUrl>
--- etc. ---

上面的styleUrl标签基本上是说:去查看文件:kml-styles.kml并找到名为:red的样式。

在我们的 KML 样式文件中,您将找到如下条目:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
    <name>KML Styles</name>
    <open>1</open>
    <Style id="red">
        <LineStyle>
            <color>7da00000</color>
            <width>1</width>
        </LineStyle>
        <PolyStyle>
            <color>7f0000ff</color>
        </PolyStyle>
    </Style>
    <Style id="green">
        <LineStyle>
            <color>FFFF00</color>
            <width>1</width>
        </LineStyle>
        <PolyStyle>
            <color>7f00aa00</color>
        </PolyStyle>
    </Style>
    --- etc. ---

请务必注意,KML 颜色 api-doc 定义在其定义中包含八个十六进制数字;比其他颜色定义的习惯多两个数字,因为前两个十六进制数字定义了颜色不透明度 (alpha(。

KML Style api-doc 中的示例(与顶部的链接相同(还显示了如何直接在包含数据的 KML 文件中定义样式。

KML 颜色的工作方式是这样的,

<color>AABBGGRR</color>
AA = alpha opacity
BB = blue
GG = gren
RR = red
The range is from 00 -> ff
RGB for white = 255, 255, 255, hex -> #ffffff
RGB for yellow is 255,255,0, hex -> #ffff00

十六进制也可以看作是

#RRGGBB

您可以轻松地移动颜色以用于 KML

所以 KML 中的黄色将是

<color>ff00FFFF</color>
<color>AABBGGRR</color>

这一直对我有用。

此外,对于边框,请在下面使用。

<outline>1</outline>

https://developers.google.com/kml/documentation/kmlreference

KML 是 XML,所以你会使用 XSL(是的,我都不是(或 PHP 或 JavaScript(取决于具体情况(来解析/转换/重新序列化回 KML。