【问题标题】:Dynamic KML placemark name display possible?可以显示动态 KML 地标名称吗?
【发布时间】:2011-08-09 18:03:41
【问题描述】:

我希望为地标设置两个名称,一个在地标悬停时显示,一个在未悬停时显示。我能找到的唯一信息是更改突出显示的地标样式的样式(图标类型、颜色、不透明度、比例)。有什么建议么?这可能吗?

http://code.google.com/apis/kml/documentation/kml_tut.html#custom_styles

【问题讨论】:

    标签: kml google-earth


    【解决方案1】:

    您可以使用自定义图标以相同的方式显示一个伪名称(您需要的文本图像)和另一个翻转伪名称。

    这称为“突出显示图标的样式”,要使用它,您需要创建并上传两个 jpg 图像

    nameImageOver.jpg
    

    nameImageNormal.jpg
    

    kml 看起来像这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://www.opengis.net/kml/2.2">
      <Document>
        <name>Highlighted Icon</name>
        <description>Mouse over to see the swap</description>
        <Style id="highlightPlacemark">
          <IconStyle>
            <Icon>
            <href>http://www.yourserver.com/nameImageOver.jpg</href>
            </Icon>
          </IconStyle>
        </Style>
        <Style id="normalPlacemark">
          <IconStyle>
            <Icon>
              <href>http://www.yourserver.com/nameImageNormal.jpg</href>
            </Icon>
          </IconStyle>
        </Style>
        <StyleMap id="exampleStyleMap">
          <Pair>
            <key>normal</key>
            <styleUrl>#normalPlacemark</styleUrl>
          </Pair>
          <Pair>
            <key>highlight</key>
            <styleUrl>#highlightPlacemark</styleUrl>
          </Pair>
        </StyleMap>
        <Placemark>
          <styleUrl>#exampleStyleMap</styleUrl>
          <Point>
            <coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
          </Point>
        </Placemark>
      </Document>
    </kml>
    

    【讨论】:

    • 在我的例子中,文本对于不同的地标是动态的。您的解决方案适用于静态标题,或者如果您想为每个可能的组合创建图像。我会将其标记为正确,因为它在某些情况下是可行的。
    • 您可以使用 gdlib 之类的东西在服务器上动态生成图像。谷歌甚至有一项免费服务可以做到这一点。只需提供您需要的文本作为查询。见groups.google.com/group/google-chart-api/web/…
    【解决方案2】:

    我使用 Google Earth API 实现了这一点。不确定这与使用 KML 有什么关系...

    // On mouse over - show name
    google.earth.addEventListener(placemark, 'mouseover', function(event) {
        placemark.setName('My Placemark Label');
    });
    // On mouse out - hide (remove) name
    google.earth.addEventListener(placemark, 'mouseout', function(event) {
        placemark.setName('');
    });
    

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多