Google多个GeoMaps,API

问题描述:

如何使用多个GeoMaps?
如果我只有一张地图,一切都可以。如果我尝试添加另一个地图,但没有再次加载geomap可视化文件,地图不会加载,如果我尝试加载它们,我会得到一个错误:Uncaught TypeError: Object #<Object> has no method 'Load'如果我更改了这两个地图的函数名称是相同的“第二个地图的名字,然后我不得不改变回调Google多个GeoMaps,API

google.setOnLoadCallback(drawMap); 

但是,如果我这样做,我得到上面张贴的错误....

更多代码:

//first map 
    <script type="text/javascript"> 

    google.load("visualization", "1", {"packages": ["geomap"]}); 

    google.setOnLoadCallback(drawMap); 



    function drawMap() { 

     var data = new google.visualization.DataTable(); 

     data.addRows(16); 

     data.addColumn("string", "City"); 

     data.addColumn("number", "Numar anunturi");   

     data.setValue(1, 0, 'Ilfov'); 

     data.setValue(1, 1, 6); 



     var options = {width: 800,height:400}; 

     options["region"] = "RO"; 

     options["colors"] = [0xFF8747, 0xFFB581, 0xc06000]; //orange colors 

     options["dataMode"] = "markers"; 


     var container = document.getElementById("map_chart_div"); 

     var geomap = new google.visualization.GeoMap(container); 

      geomap.draw(data, options); 

    } 

    </script> 

     //second map 

    <script type="text/javascript">  

    function drawMap() { 

     var data = new google.visualization.DataTable(); 

     data.addRows(16); 

     data.addColumn("string", "City"); 

     data.addColumn("string", "pret/mp:"); 

     data.setValue(0, 0, 'Ilfov'); 

     data.setValue(0, 1, '50.44');  


     var options = {width: 800,height:400}; 

     options["region"] = "RO"; 

     options["colors"] = [0xFF8747, 0xFFB581, 0xc06000]; //orange colors 

     options["dataMode"] = "markers";  

     var container = document.getElementById("map_pret_div"); 

     var geomap = new google.visualization.GeoMap(container);  

     geomap.draw(data, options); 

    } 

    </script> 
+0

如果您显示您的代码,这将是非常有用的。 – Trott 2011-05-29 17:54:00

+0

是的,我刚刚删除了一些setValues以使代码更小。第一张地图正在工作,第二张不是.. – Cristy 2011-05-29 18:02:54

我修改你的代码为接下来,它现在似乎工作,但你必须耐心等待第二张地图加载。在第二张地图发射前,我正在听第一张地图上的drawingDone事件。我的理论是,这种蹒跚的行为阻止了两个地图在Visualization API内部彼此的数据结构之间相互踩踏。但即使我对错误的原因,这至少起作用。

我的更改可以使用一些整理。对于那个很抱歉。我有点匆忙,但是在我跑出去做其他事情之前,希望得到工作代码。

<script type="text/javascript"> 

google.load("visualization", "1", {"packages": ["geomap"],"callback": "drawMaps"}); 

function drawMaps() { 
    drawMap1(); 
} 

function drawMap1() { 

    var data = new google.visualization.DataTable(); 

    data.addRows(16); 

    data.addColumn("string", "City"); 

    data.addColumn("number", "Numar anunturi");   

    data.setValue(1, 0, 'Ilfov'); 

    data.setValue(1, 1, 6); 



    var options = {width: 800,height:400}; 

    options["region"] = "RO"; 

    options["colors"] = [0xFF8747, 0xFFB581, 0xc06000]; //orange colors 

    options["dataMode"] = "markers"; 


    var container = document.getElementById("map_chart_div"); 

    var geomap = new google.visualization.GeoMap(container); 

    geomap.draw(data, options); 
    google.visualization.events.addListener(geomap, 'drawingDone', drawMap2); 
} 

function drawMap2() { 
    var data = new google.visualization.DataTable(); 

    data.addRows(16); 

    data.addColumn("string", "City"); 

    data.addColumn("string", "pret/mp:"); 

    data.setValue(0, 0, 'Ilfov'); 

    data.setValue(0, 1, '50.44');  


    var options = {width: 800,height:400}; 

    options["region"] = "RO"; 

    options["colors"] = [0xFF8747, 0xFFB581, 0xc06000]; //orange colors 

    options["dataMode"] = "markers";  

    var container = document.getElementById("map_pret_div"); 

    var geomap2 = new google.visualization.GeoMap(container);  

    geomap2.draw(data, options); 

} 
</script> 
+0

好的,我会试试。另外,GeoMap(甚至只有一个)加载速度缓慢是否正常? – Cristy 2011-05-29 19:23:31

+0

我相信GeoMap是基于Flash的,通常加载得相当缓慢。然而,本月早些时候发布的API版本用GeoChart替代了GeoMap。我会建议调查。 http://code.google.com/apis/chart/interactive/docs/gallery/geochart.html – Trott 2011-05-29 20:13:53

+0

SVG地图加载速度很快,但好像它们不支持标记... – Cristy 2011-05-30 12:14:16