将Google图表添加到FusionTableLayer信息窗口

皮特克

我正在尝试在InfoWindow(融合表图层)中显示图表(Google Chart API),但是问题出在容器“未捕获的错误:容器为null或未定义。” 每当我尝试将div包含在InfoWindow中时。

我正在尝试根据此解决方案解决问题,但不适用于融合表使用Google Maps API将Google图表添加到信息窗口中

请帮忙

<script type="text/javascript">
google.load('visualization', '1', {packages: ['corechart']});
    function drawVisualization() {
      var queryText = encodeURIComponent("SELECT Year, Austria, Bulgaria, Denmark, Greece FROM 641716");
      google.visualization.drawChart({
        "containerId": 'visualization_div',
        "dataSourceUrl": 'https://www.google.com/fusiontables/gvizdata?tq=',
        "query":"SELECT Year, Austria, Bulgaria, Denmark, Greece FROM 641716",
        "refreshInterval": 5,
        "chartType": "PieChart",
        "options": {
          "title":"Yearly Coffee Consumption by Country",
          "vAxis": {"title": "Year"},
          "hAxis": {"title": "Cups"}
        }
      });
    }
      function initialize() {
        var map = new google.maps.Map(document.getElementById('map-canvas'), {
          center: new google.maps.LatLng(29.296435107347698, -29.54822280000008),
          zoom: 2,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        var layer = new google.maps.FusionTablesLayer({
          query: {
            select: 'col0',
            from: '1PoUAVtdJKOKnJT_ZYkoM7yDpGw-wNJMHXakPeC0'
          },
          map: map
        });
        google.maps.event.addListener(layer, 'click', function(e) {
        drawVisualization(this);
          e.infoWindowHtml += "<div id='visualization_div'></div>";{
          }
        });
      }

      google.maps.event.addDomListener(window, 'load', initialize);

    </script>

PS。

还有一件事 !可以显示一行数据中的图表。在我的示例中,对于一个被点击的国家?

莫勒博士

这有点困难。

FTLayer的信息窗口不会立即打开,因为该信息窗口的数据将被异步请求。

当您立即调用drawVisualization时,不能保证infowindow-content在DOM中已经可用,但是#visualization_div将无法使用。

问题:FTLayer的信息窗口没有任何准备就绪事件,您永远不会知道信息窗口何时准备就绪。

另一个问题:图表也将异步绘制,结果将是信息窗口的外观不理想(图表将绘制在信息窗口下方,而不是内部)

可能的解决方案(可能还有其他解决方案):改用自定义信息窗口:

<script type="text/javascript">
google.load('visualization', '1', {packages: ['corechart']});

  //pass the infowindow as argument, we need it later
function drawVisualization(infowindow) {
  var queryText = encodeURIComponent("SELECT Year, Austria, Bulgaria, \
                                      Denmark, Greece FROM 641716");

    /*note:      we don't need the ContainerId here, 
                 we use the node-reference with draw
     *also note: we use ChartWrapper here, because we need 
                 the ready-event of the chart to redraw the infowindow
    */
  var chart=new google.visualization.ChartWrapper({
    "dataSourceUrl": 'https://www.google.com/fusiontables/gvizdata?tq=',
    "query":"SELECT Year, Austria, Bulgaria, Denmark, Greece FROM 641716",
    "refreshInterval": 5,
    "chartType": "PieChart",
    "options": {
      "title":"Yearly Coffee Consumption by Country",
      "vAxis": {"title": "Year"},
      "hAxis": {"title": "Cups"}
    }
  });


  var ready=google.visualization.events.addListener(chart, 'ready', function(){
      //re-assign the map-property to redraw the 
      //infowindow when the chart has been drawn
    infowindow.setMap(infowindow.getMap());
      //remove the ready-listener
    google.visualization.events.removeListener(ready);
   });

    //draw the chart
  chart.draw(infowindow.getContent().lastChild);

}

function initialize() {
    map = new google.maps.Map(document.getElementById('map-canvas'), {
      center: new google.maps.LatLng(29.296435107347698, -29.54822280000008),
      zoom: 2,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var layer = new google.maps.FusionTablesLayer({
      query: {
        select: 'col0',
        from: '1PoUAVtdJKOKnJT_ZYkoM7yDpGw-wNJMHXakPeC0'
      },
      map: map,
        //don't use the infowindows of the FTLayer
      suppressInfoWindows:true
    });
      //a custom infowindow
    infowindow=new google.maps.InfoWindow();


    google.maps.event.addListener(layer, 'click', function(e) {
      //call drawVisualization when the infowindow is ready
      google.maps.event.addListenerOnce(infowindow,'domready',function(){
        drawVisualization(infowindow);
      });
        //create the content for the infowindow
      var node=document.createElement('div');
      node.innerHTML=e.infoWindowHtml;
        //create the node where the chart will be drawn
      node.appendChild(document.createElement('div'));
        //open the infowindow
      infowindow.setOptions({position:e.latLng,content:node,map:map});
     });
  }

  google.maps.event.addDomListener(window, 'load', initialize);

</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将图像添加到多个Google Map信息窗口

来自分类Dev

将标签添加到Google图表

来自分类Dev

将图像添加到Google图表

来自分类Dev

带有kml图层的Google地图。Google将_blank添加到信息窗口链接

来自分类Dev

带有kml图层的Google地图。Google将_blank添加到信息窗口链接

来自分类Dev

将开放时间添加到Google Maps信息窗口

来自分类Dev

将事件监听器的on('change')添加到Google Maps信息窗口

来自分类Dev

如何将信息窗口添加到 Google 地图 Api 中的数据层

来自分类Dev

将类添加到当前打开的信息窗口

来自分类Dev

将信息窗口添加到路线中的目标标记

来自分类Dev

将信息窗口添加到多个标记

来自分类Dev

将var值添加到Google图表,angularJs

来自分类Dev

将更多信息添加到信息窗口gmaps v3?

来自分类Dev

将图表添加到 RDLC 报告

来自分类Dev

谷歌地图 API 将信息窗口添加到点击事件的标记数组

来自分类Dev

将信息添加到xml文件

来自分类Dev

将信息添加到xml文件

来自分类Dev

将动画添加到弹出窗口

来自分类Dev

将 ScrollBar 添加到标签窗口

来自分类Dev

将Google图表或类似内容添加到Chrome打包的应用中

来自分类Dev

将超链接添加到Google图表中的自定义工具提示

来自分类Dev

Google图表:如何将选择事件处理程序添加到饼图中?

来自分类Dev

将Google图表添加到Smarty模板页面(.tpl)后不显示

来自分类Dev

Google图表将标记添加到折线图功能

来自分类Dev

为什么我无法访问添加到添加到 Google 地图中标记的自定义信息窗口的按钮?

来自分类Dev

如何将图像/图表添加到API蓝图?

来自分类Dev

将日期行情添加到matplotlib / python图表

来自分类Dev

无法使用剑道图表将注释添加到categoryAxis

来自分类Dev

将轴名称添加到图表C#

Related 相关文章

  1. 1

    将图像添加到多个Google Map信息窗口

  2. 2

    将标签添加到Google图表

  3. 3

    将图像添加到Google图表

  4. 4

    带有kml图层的Google地图。Google将_blank添加到信息窗口链接

  5. 5

    带有kml图层的Google地图。Google将_blank添加到信息窗口链接

  6. 6

    将开放时间添加到Google Maps信息窗口

  7. 7

    将事件监听器的on('change')添加到Google Maps信息窗口

  8. 8

    如何将信息窗口添加到 Google 地图 Api 中的数据层

  9. 9

    将类添加到当前打开的信息窗口

  10. 10

    将信息窗口添加到路线中的目标标记

  11. 11

    将信息窗口添加到多个标记

  12. 12

    将var值添加到Google图表,angularJs

  13. 13

    将更多信息添加到信息窗口gmaps v3?

  14. 14

    将图表添加到 RDLC 报告

  15. 15

    谷歌地图 API 将信息窗口添加到点击事件的标记数组

  16. 16

    将信息添加到xml文件

  17. 17

    将信息添加到xml文件

  18. 18

    将动画添加到弹出窗口

  19. 19

    将 ScrollBar 添加到标签窗口

  20. 20

    将Google图表或类似内容添加到Chrome打包的应用中

  21. 21

    将超链接添加到Google图表中的自定义工具提示

  22. 22

    Google图表:如何将选择事件处理程序添加到饼图中?

  23. 23

    将Google图表添加到Smarty模板页面(.tpl)后不显示

  24. 24

    Google图表将标记添加到折线图功能

  25. 25

    为什么我无法访问添加到添加到 Google 地图中标记的自定义信息窗口的按钮?

  26. 26

    如何将图像/图表添加到API蓝图?

  27. 27

    将日期行情添加到matplotlib / python图表

  28. 28

    无法使用剑道图表将注释添加到categoryAxis

  29. 29

    将轴名称添加到图表C#

热门标签

归档