【问题标题】:How to override KML colors in Google Map?如何覆盖谷歌地图中的 KML 颜色?
【发布时间】:2012-05-23 13:16:03
【问题描述】:

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

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 kml


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      KML 颜色基于 Styleapi-doc 标记,这些标记要么直接在 KML 中定义,要么使用对外部 KML 样式文件的引用(类似于 CSS)。我们使用外部样式文件,以便样式可以应用于多个 KML 文件。

      这意味着在我们的 KML data 文件中,您会发现如下条目:

      <?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 style 文件中,您会找到如下条目:

      <?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 Styleapi-doc 的示例(与顶部的链接相同)还显示了如何在包含数据的 KML 文件中直接定义样式。

      【讨论】:

        【解决方案3】:

        KML 是 XML,因此您可以使用 XSL(是的,我两者都不是)或 PHP 或(取决于具体情况)JavaScript 来解析/转换/重新序列化回 KML。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-03
          相关资源
          最近更新 更多