0

我正在使用具有 XML 文件的 Flash 地图。我已经使用 XSLT 从 XML 填充了地图网页上的列表(在 Flash 地图之外)。我想通过 XSL 添加一个 JS 函数,该函数从 XML 中选择(填充的)元素,该元素将与地图交互。

例如,我的列表是 50 个州。这是 XML 的一小部分:

<attributes>
        <col name="State">Kentucky</col>
        <STATENAME>Kentucky</STATENAME>
  </attributes>

等等...所有 50 个状态都包含在上述 XML 中

这是我填充列表的方式:

<table border="0">
      <tr bgcolor="#9acd32">
        <th>State</th>
      </tr>
<xsl:for-each select="map/layer/feature/attributes">
<xsl:sort select="STATENAME"/>
      <tr>
        <td><a onMouseOver='highlight()' onMouseOut='highlight_clear()'><xsl:attribute name="href">http://mysite.com/<xsl:value-of select="STATENAME"/>.html</xsl:attribute><xsl:value-of select="STATENAME" /></a></td>
      </tr>
      </xsl:for-each>
    </table>

所有 50 个州都以这种方式提供了指向其各自页面的链接:http: //mysite.com/statename.html

这是Javascript:

function highlight() {
            theMap.features('State="Kentucky"').highlight({visible: true, fillColor: "#FFFF00", fillAlpha: 1.0});          
        }

这里的关键是('State="Kentucky"')我试图让 State to = 填充在列表中的 SAME 状态,而不必编写 50 个不同的函数 - 每个状态一个。例如,当所有 50 个州都被填充时,如果鼠标移到德克萨斯上空,它会自动调出 theMap.features('State="Texas"'),如果移过内布拉斯加州,就会调出内布拉斯加州。

我试过这样做:

function highlight() {
var sn='<xsl:value-of select="STATENAME"/>';
                theMap.features('State="sn"').highlight({visible: true, fillColor: "#FFFF00", fillAlpha: 1.0}); }

但它没有用,我也不认为它会。但是,它本质上是我想要发生的事情的想法。

想法?

4

1 回答 1

0

你应该能够做到这一点:

<table border="0">
  <tr bgcolor="#9acd32">
     <th>State</th>
  </tr>
  <xsl:for-each select="map/layer/feature/attributes/STATENAME">
    <xsl:sort select="."/>
      <tr>
        <td>
          <a onMouseOver='highlight("{.}")' 
             onMouseOut='highlight_clear()'
             href='http://mysite.com/{.}.html'>
             <xsl:value-of select="." />
          </a>
        </td>
      </tr>
   </xsl:for-each>
</table>

然后只需将您的 highlight() 函数更改为:

function highlight(state) {
    theMap.features('State="' + state + '"')
          .highlight({visible: true, 
                      fillColor: "#FFFF00", 
                      fillAlpha: 1.0});          
}
于 2013-03-20T19:34:42.877 回答