0

我正在将脚本移植到 V3 我有一个朋友几年前写的,但我在错误控制台中得到了这个......

错误:未定义 GGeoXml

这适用于 V2。这是否不再可以在 V3 中使用,如果不是,我的解决方案是什么。

这是相对的代码片段。

var map;
    var geoXml;
    var lcolor = 'white';                       //This defines the line color for the target circle
    function initialize() {
         {
            map = new google.maps.Map(document.getElementById("map_canvas"));
            geoXml = new GGeoXml(URLToKML + "?rand="+(new Date()).valueOf() );

            map.setCenter(llCenter, 5);
//          map.addControl(new GLargeMapControl());
//          map.addControl(new GSmallMapControl());   // smaller map control
//          map.addControl(new GMapTypeControl());

            // Comment these listeners out if you don't want "hiding" controls
            map.hideControls();
            GEvent.addListener(map, "mouseover", function(){
                map.showControls();         //'mouseover' listener shows controls
            });
            GEvent.addListener(map, "mouseout", function(){
                map.hideControls();         //'mouseout' listener hides controls
            });

            map.enableScrollWheelZoom();
            map.setMapType(G_HYBRID_MAP);        // Use one of these three as your initial map
//          map.setMapType(G_SATELLITE_MAP);
//          map.setMapType(G_NORMAL_MAP);
            map.addOverlay(geoXml);

如果有人想查看完整代码,这是我用于地图的完整 js 代码的链接。在将它移植到 V3 时我可能遗漏了一些东西

演示代码

编辑:好的,我显示了地图,但我不确定我是否正确设置了 KML。我正在尝试插入一个变量,因为 KML 文件是从其他脚本动态创建的,因为数据每 30 秒更改一次并且假设刷新页面。如果我直接调用它,我可以让它像这样读取 KML 文件....

var nyLayer = new google.maps.KmlLayer('http://www.mesquiteweather.net/NSGMap/GMStrikes.kml',
                  {
                      suppressInfoWindows: false,
                      map: map,
                      preserveViewport: true
                  });

}

但是,当我尝试使用代码上方定义的变量动态调用它时,它不会读取它。这在 V2 中运行良好。

var nyLayer = new google.maps.KmlLayer('URLToKML + "?rand="+(new Date()).valueOf()',
                  {
                      suppressInfoWindows: false,
                      map: map,
                      preserveViewport: true
                  });

}

这是我用于此地图的代码的链接。

更新的演示代码

这是一个如何使用 V2 工作的链接。

示例 V2

这是我在转换时遇到问题的 V3 版本的链接。

V3 示例

我忽略了什么导致它无法像在 V2 中那样在 V3 中正确读取?

-谢谢

4

1 回答 1

0

Chrome 中的 javascript 控制台有 2 个错误:

Failed to load resource: the server responded with a status of 404 (Not Found) http://www.mesquiteweather.net/elabel2.js
Uncaught ReferenceError: MarkerWithLabel is not defined   wxgmap_lightning.php:732

更新:我仍然得到

Uncaught ReferenceError: ELabel is not defined wxgmap_lightning.php:733

我在某处有一个将 Mike Williams 的 elabel 移植到 v3 的版本。

没有保证(不确定它来自哪里或测试得如何): v3 elabel

如果 URLToKML 是一个变量,您想删除它周围的 '。

   var nyLayer = new google.maps.KmlLayer('URLToKML + "?rand="+(new Date()).valueOf()',
              {
                  suppressInfoWindows: false,
                  map: map,
                  preserveViewport: true
              });

    }

应该

  var nyLayer = new google.maps.KmlLayer(URLToKML + "?rand="+(new Date()).valueOf(),
              {
                  suppressInfoWindows: false,
                  map: map,
                  preserveViewport: true
              });

  }
于 2013-07-03T05:38:03.790 回答