xsl中的javascript,用于从xml文件生成Google地图

时间:2013-04-26 11:05:59

标签: javascript xml xslt xslt-1.0

我正在使用XSLT将XML文件转换为HTML。

XML文件包含有关空间坐标的信息,因此我想使用它们来使用Google Maps API生成地图。

为了做到这一点,我编写了一个javascript并将其嵌入到我的XSLT中。此代码在Internet Explorer和Google Chrome中运行正常,但在Mozilla Firefox 它无法正常工作,我找不到原因......

Javascript就是这样:

<script><![CDATA[ 
    function LoadMap(div_map, szminx, szmaxx, szminy, szmaxy) {
        var minx, maxx, miny, maxy;

        minx=parseFloat(szminx);
        maxx=parseFloat(szmaxx);
        miny=parseFloat(szminy);
        maxy=parseFloat(szmaxy);

        if (GBrowserIsCompatible() && !isNaN(minx) && !isNaN(maxx) && !isNaN(miny) && !isNaN(maxy)) {
            var d;
            var zoomLevel;              
            var mapSize = new google.maps.Size(250,250, "px", "px");

            var centreX = minx+(maxx-minx)/2;
            var centreY = miny+(maxy-miny)/2;

            var map = new google.maps.Map (document.getElementById(div_map), {draggableCursor:"crosshair", size:mapSize});
            map.setCenter(new google.maps.LatLng(centreY,centreX));
            map.addControl(new google.maps.SmallMapControl());

            d=maxx-minx;
            if (d<maxy-miny) {d=maxy-miny;}

            if (d<0.0000001) {d=360;}

            zoomLevel=parseInt(-Math.log(d)/Math.log(2)+8);     

            map.setZoom(zoomLevel);
        }
    }
]]></script>

我在XSLT中用这些行调用它:

...
<td width="250px">
    <div id="map" style="width:250px; height:250px; display:block;">
    </div>
    <script type="text/javascript"> LoadMap("map", 
        <xsl:value-of select="west/coord"/>, 
        <xsl:value-of select="east/coord"/>, 
        <xsl:value-of select="south/coord"/>,
        <xsl:value-of select="north/coord"/>);
    </script>
</td>
...

想法?

修改

问题似乎出现在添加了Google API的XSLT部分。 在我的XSLT中它嵌入如下:

 <script src="http://maps.google.com/maps?file=api&amp;hl=ca&amp;v=2&amp;sensor=false&amp;key=myKey" type="text/javascript"/>

正如我所说,它在Chrome和IE中运行良好

如果我将javascript放在静态HTML中,我必须修改此行,移动sensor = false,如google API网页中所述:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=myKey&sensor=false" type="text/javascript">

通过这些修改,代码在所有浏览器中都能很好地运行,但XSLT并不赞同这种改变。如果我在XSLT中添加此版本的行,则所有浏览器都会返回此错误:

XML解析错误:格式不正确 指向sensor = false位置。

1 个答案:

答案 0 :(得分:0)

好像你忘了在sensor=true之前逃脱最后一个&符号 - 所以&amp; sensor 应该是&amp; amp; amp;&amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; / p>

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=myKey&amp;sensor=false" type="text/javascript">

也可以理解这个错误。