Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xsl中用于从xml文件生成Google地图的javascript_Javascript_Xml_Xslt_Xslt 1.0 - Fatal编程技术网

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

xsl中用于从xml文件生成Google地图的javascript,javascript,xml,xslt,xslt-1.0,Javascript,Xml,Xslt,Xslt 1.0,我正在使用XSLT将XML文件转换为HTML XML文件包含有关空间坐标的信息,因此我想使用它们使用GoogleMapsAPI生成地图 为了做到这一点,我编写了一个javascript,并将其嵌入到XSLT中。这段代码在Internet Explorer和Google Chrome中运行良好,但在MozillaFirefox中无法运行,我找不到原因 Javascript是这样的: <script><![CDATA[ function LoadMap(div_map,

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

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

为了做到这一点,我编写了一个javascript,并将其嵌入到XSLT中。这段代码在Internet Explorer和Google Chrome中运行良好,但在MozillaFirefox中无法运行,我找不到原因

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>
...
。。。
加载地图(“地图”,
, 
, 
,
);
...
想法

编辑

问题似乎出在XSLT中添加了GoogleAPI的部分。 在我的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"/>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=myKey&amp;sensor=false" 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应该是&;传感器,如下所示:

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


这个错误也有道理。

“不工作”的意思是?不工作意味着地图没有显示在Firefox中。控制台显示:InvalidStateError:试图使用不可用或不再可用的对象。TypeError:google.maps.Size不是构造函数。我建议您首先在静态HTML文档中尝试Javascript代码是否与Mozilla兼容。如果这是可行的,但在使用XSLT生成HTML时却不起作用,那么我们需要在XSLT的上下文中查看它。但目前,新的google.maps.Size(250250,“px”,“px”)上出现了错误,这看起来是一个纯Javascript问题,或者是googlemapsapi的嵌入问题,而您发布的XSLT只是让我们发现错误变得复杂。也可能与我们有关。还考虑向我们展示脚本元素加载到地图API库的位置和方式。@ Martin HoNNEN JavaScript在Firefox、IE和Chrome中的静态HTML中运行良好。问题似乎在于加载GoogleAPI的脚本。我正在编辑我的问题来解释我的发现。是的,这是我第一次想到的,但是如果我做了改变,结果是一样的,谷歌API在IE和Chrome中工作,但在FireFox中不工作。然而,如果你看一下API文档,那就是调用GoogleMapsAPI的方法。我认为@Martin_Honnen的最后一句话是正确的线索,可能的解决方案是: