将Google地图移植到V3后,GeoXML未定义错误

时间:2013-07-02 22:08:44

标签: google-maps google-maps-api-3

我正在将一个脚本移植到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

的东西

DEMO CODE

编辑:好我有地图显示,但我不确定我是否正确设置了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
                  });

}

以下是我为此地图使用的代码的链接。

UPDATED DEMO CODE

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

EXAMPLE V2

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

V3 EXAMPLE

我忽略了什么导致这在V3中没有像在V2中那样正确读取?

-Thanks

1 个答案:

答案 0 :(得分: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 to v3。

没有guarentees(不确定它来自何处或测试得如何): 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
              });

  }