【问题标题】:How can I set the label color for all markers in a layer in Google Maps?如何为谷歌地图图层中的所有标记设置标签颜色?
【发布时间】:2021-02-01 03:42:10
【问题描述】:

我看过一些相关的问题,但没有一个能完全回答我的问题。

这里提到了 Javascript:How to override KML colors in Google Map?

这里提到了 KML 颜色代码助手,但没有给出应用它的解决方案:Google Maps KML: 8-Digit Hex Code

KML 参考建议使用<Style>,但这不起作用:https://developers.google.com/kml/documentation/kmlreference#balloonstyle

有没有办法为给定图层的所有标记设置颜色(或样式,通常),以便与其他图层区分开来?

【问题讨论】:

  • 你为什么说<Style>没用?你是如何使用它的?您如何查看 KML?
  • I Imported 生成的 KML 到 Google 地图,显示颜色仍然是默认值。我用 Atom 编辑了 KML。
  • “生成的 KML”是什么样的?
  • 添加了<Style id="foo"><BalloonStyle><color>ffd18802</color></BalloonStyle></Style> 并使用了<styleUrl>#foo</styleUrl>。所以要么(1)-normal-highlight标签都是必需的,要么IconStyle必须被使用。
  • 你能edit你的问题举个例子吗?

标签: google-maps kml


【解决方案1】:

这并不完美——我宁愿在 UI 中有一种简单的点击式方法来执行此操作——但是就这样吧。

我们以美国国家公园的一层标记为例;取自维基百科:https://tools.wmflabs.org/kmlexport?article=List_of_national_parks_of_the_United_States

我已使用导入工具将这些添加到新地图中

我认为最简单的方法是将所有需要的样式应用到 UI 中的单个标记,比如第一个标记。为简单起见,我将其设为橙色:

现在,将图层导出到 KML 并打开 KML 文件。这是该文件的精简版:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <name>National parks</name>
    <Style id="icon-1899-0288D1-normal">
      <IconStyle>
        <color>ffd18802</color>
        <!-- more attributes -->
      </IconStyle>
      <LabelStyle>
        <scale>0</scale>
      </LabelStyle>
    </Style>
    <Style id="icon-1899-0288D1-highlight">
       <!-- similar markup -->
    </Style>
    <StyleMap id="icon-1899-0288D1">
      <Pair>
        <key>normal</key>
        <styleUrl>#icon-1899-0288D1-normal</styleUrl>
      </Pair>
      <Pair>
        <key>highlight</key>
        <styleUrl>#icon-1899-0288D1-highlight</styleUrl>
      </Pair>
    </StyleMap>
    <!-- Two more <Style> tags for -normal and -highlight -->
    <Style id="icon-1899-F57C00-normal"></Style>
    <Style id="icon-1899-F57C00-highlight"></Style>
    <!-- Another <StyleMap> -->
    <StyleMap id="icon-1899-F57C00"></StyleMap>
    <Placemark>
      <name>Acadia</name>
      <description>...</description>
      <styleUrl>#icon-1899-F57C00</styleUrl>
      <Point>...</Point>
    </Placemark>
    <Placemark>
      <name>National Park of American Samoa</name>
      <description>...</description>
      <styleUrl>#icon-1899-0288D1</styleUrl>
      <Point></Point>
    </Placemark>
    <!-- More <Placemark>s for the other parks -->
  </Document>
</kml>

从这里开始,我们只需要将所有标签的&lt;styleUrl&gt; 中的引用样式替换为Acadia 使用的样式即可。这是一个简单的查找和替换。我们也可以删除过时的&lt;Style&gt;s 和&lt;StyleMap&gt;,但这并不是绝对必要的。之后,保存更新后的 KML 并将其重新导入 Google 地图,我们就完成了:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多