外部样式表中的KML PolyStyle?

时间:2014-02-19 07:40:12

标签: kml

我已经看了这么久,我再也看不到了。

它看起来像有效的KML样式,URI看起来很好,但它不起作用。

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
    <name>Style Test</name>

    <PolyStyle>
        <color>776d8f77</color>
        <outline>0</outline>
    </PolyStyle>

    <PolyStyle id="counties">
        <color>776d8f77</color>
        <outline>0</outline>
    </PolyStyle>

</Document>
</kml>

此文件由KML引用:

<?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://www.opengis.net/kml/2.2"><Document>
    <Placemark>
        <name>Viburnum australe US Distribution</name>
        <styleUrl>/_/maps/style.kml#counties</styleUrl>
            <Polygon> ....

为什么两种风格都没有被应用?

TIA .....

1 个答案:

答案 0 :(得分:2)

<PolyStyle>样式元素在父<Style>元素的上下文之外无效。功能(例如地标)不能直接引用PolyStyle元素,而是通过StyleStypeMap引用或内联元素引用。另外,使用正确的KML命名空间URL作为http://www.opengis.net/kml/2.2而不是http://earth.google.com/kml/2.2

而是重写“style.kml”文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
    <name>Style Test</name>

    <Style id="s1">
      <PolyStyle>
        <color>776d8f77</color>
        <outline>0</outline>
      </PolyStyle>
    </Style>

    <Style id="counties">
      <PolyStyle>
        <color>776d8f77</color>
        <outline>0</outline>
      </PolyStyle>
    </Style>

</Document>
</kml>

现在对该样式的引用将起作用:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
  <Placemark>
    <name>Viburnum australe US Distribution</name>
    <styleUrl>style.kml#counties</styleUrl>
    <Polygon>....

Google提供了其他KML文件使用的样式的KML文档示例:
http://kml-samples.googlecode.com/svn/trunk/kml/Style/styles.kml
http://kml-samples.googlecode.com/svn/trunk/kml/Style/remote-style.kml