【问题标题】:How to add data of 2-3 lines for countries in Google Geocharts如何在 Google Geocharts 中为国家/地区添加 2-3 行数据
【发布时间】:2017-03-06 10:40:15
【问题描述】:

我正在使用地理图表为我的网站显示世界各地的可用商店,我需要添加可用商店的数据,并在我单击地图上的某个区域时在 div 中显示此数据。以下是我的代码:

<!DOCTYPE html>
<html>
<head>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAJ142umlpMPn6tahte2VZwwNUfHkVZXcs">
</script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['geochart']});
google.charts.setOnLoadCallback(drawMap);
 <!-- google.load('visualization', '1', {  packages: ['geochart'],callback: drawMap }); -->
function drawMap() {

var data = google.visualization.arrayToDataTable([
['Country'],
['Austria'],
['Belgium'],
['Bulgaria'],
['China'],
['Croatia'],
['Czech Republic'],
['France'],
['Germany'],
['Greek'],
['Hungary'],
['India'],
['Italy'],
['Japan'],
['Kazakhstan'],
['Luxembourg'],
['Moldova'],
['Netherlands'],
['Pakistan'],
['Poland'],
['Portugal'],
['Romania'],
['Russia'],
['Serbia'],
['Slovakia'],
['Spain'],
['Sweden'],
['Switzerland'],
['Turkey'],
['Ukraine']
]);

var options = {
backgroundColor: '#81d4fa',
defaultColor: '#FCC51D',
dataMode: 'regions',

<!-- region:'IN' -->

};

var container = document.getElementById('regions_div');
var chart = new google.visualization.GeoChart(container);


function myClickHandler() {

var selection = chart.getSelection();
document.getElementById('region-info').style.visibility="visible";
<!-- var message = ''; -->
for (var i = 0; i < selection.length; i++) {
  var item = selection[i];
  if (item.row != null && item.column != null) {
    //message += '{row:' + item.row + ',column:' + item.column + '}';
    document.getElementById('region-info').innerHTML = "This is the region where we put store-info";
  } else if (item.row != null) {
   <!--  message += '{row:' + item.row + '}'; -->
   document.getElementById('region-info').innerHTML = "This is the region where we put store-info";
  } else if (item.column != null) {
    <!-- message += '{column:' + item.column + '}'; -->
     document.getElementById('region-info').innerHTML = "This is the region where we put store-info";
  }

  google.visualization.events.addListener(chart, 'select', myClickHandler);
  $( "#zoomin" ).click(function() {
  var zoom = $( "#map-area" ).css( "zoom",1.4 );
  });

  $( "#zoomout" ).click(function() {
  var zoom = $( "#map-area" ).css( "zoom",1 );
  });


  chart.draw(data, options);
  }

  </script>
  <style>
 .jvectormap-zoomin,.jvectormap-zoomout{
  border: 1px solid #c8d9e5;
  color: #565a5b;
  font-family: 'DINWebPro-Medium W01 Regular',"Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 42px;
text-align: center;
cursor: pointer;
width: 55px;
position: absolute;
opacity: 0.5;
left: 17px;
background: white;
height: 44px;
}
.jvectormap-zoomin{
    bottom: 55px;
}
.jvectormap-zoomout{
    bottom: 5px;
}
.geocharts-container{
    height:100%;
    width:100%;
    position:relative;
    overflow:hidden;
    border: 1px solid #000;

}

</style>
</head>
<body>
<div class="geocharts-container">
<div id="map-area" style="width: 80%; height: 600px;float:left;"><div id="regions_div"></div></div>
<div id="zoomin" class="jvectormap-zoomin">+</div>
<div id="zoomout" class="jvectormap-zoomout">-</div> 
<div id="region-info"   style="float:right;width:20%;height:600px;visibility:hidden;">Text area</div>
</div>

</body>
</html>

当我点击俄罗斯等地图上的区域时,可用商店/商店地址的数据应显示在地图旁边的“region-info”div中。

【问题讨论】:

    标签: javascript jquery html google-api google-visualization


    【解决方案1】:

    您可以将商店信息添加为数据表中的附加列

    然后使用数据视图隐藏图表中的其他列

    var view = new google.visualization.DataView(data);
    // only include first column
    view.setColumns([0]);
    

    选中后,从数据表中拉取信息并显示在 div 中

    注意:如果我没记错的话,GeoChart 永远不会有多个选择
    selection.column 将始终为空


    请参阅以下工作 sn-p...

    google.charts.load('current', {'packages':['geochart']});
    google.charts.setOnLoadCallback(drawMap);
    function drawMap() {
      var data = google.visualization.arrayToDataTable([
        ['Country', 'Sales'],
        ['Austria', 100],
        ['Belgium', 103],
        ['Bulgaria', 150],
        ['China', 160],
        ['Croatia', 85],
        ['Czech Republic', 40],
        ['France', 60],
        ['Germany', 80],
        ['Greek', 111],
        ['Hungary', 130],
        ['India', 90],
        ['Italy', 210],
        ['Japan', 230],
        ['Kazakhstan', 56],
        ['Luxembourg', 14],
        ['Moldova', 2],
        ['Netherlands', 91],
        ['Pakistan', 12],
        ['Poland', 63],
        ['Portugal', 14],
        ['Romania', 105],
        ['Russia', 60],
        ['Serbia', 81],
        ['Slovakia', 25],
        ['Spain', 85],
        ['Sweden', 150],
        ['Switzerland', 102],
        ['Turkey', 113],
        ['Ukraine', 40]
      ]);
      var view = new google.visualization.DataView(data);
      // only include first column
      view.setColumns([0]);
    
      var options = {
        backgroundColor: '#81d4fa',
        defaultColor: '#FCC51D',
        dataMode: 'regions',
      };
    
      var container = document.getElementById('regions_div');
      var chart = new google.visualization.GeoChart(container);
    
      google.visualization.events.addListener(chart, 'select', myClickHandler);
      $( "#zoomin" ).click(function() {
        var zoom = $( "#map-area" ).css( "zoom",1.4 );
      });
    
      $( "#zoomout" ).click(function() {
        var zoom = $( "#map-area" ).css( "zoom",1 );
      });
      chart.draw(view, options);
    
      function myClickHandler() {
        var selection = chart.getSelection();
        document.getElementById('region-info').style.visibility="visible";
        if (selection.length > 0) {
          var storeInfo = data.getValue(selection[0].row, 0) + ' ' + data.getColumnLabel(1) + ': ' + data.getValue(selection[0].row, 1);
          document.getElementById('region-info').innerHTML = "This is the region where we put store-info<br/>" + storeInfo;
        }
      }
    }
    .jvectormap-zoomin,.jvectormap-zoomout{
        border: 1px solid #c8d9e5;
        color: #565a5b;
        font-family: 'DINWebPro-Medium W01 Regular',"Helvetica Neue",Helvetica,Arial,sans-serif;
        font-size: 42px;
        text-align: center;
        cursor: pointer;
        width: 55px;
        position: absolute;
        opacity: 0.5;
        left: 17px;
        background: white;
        height: 44px;
    }
    .jvectormap-zoomin{
        bottom: 55px;
    }
    .jvectormap-zoomout{
        bottom: 5px;
    }
    .geocharts-container{
        height:100%;
        width:100%;
        position:relative;
        overflow:hidden;
        border: 1px solid #000;
    }
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAJ142umlpMPn6tahte2VZwwNUfHkVZXcs">
    </script>
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
    <div class="geocharts-container">
    <div id="map-area" style="width: 80%; height: 600px;float:left;"><div id="regions_div"></div></div>
    <div id="zoomin" class="jvectormap-zoomin">+</div>
    <div id="zoomout" class="jvectormap-zoomout">-</div>
    <div id="region-info"   style="float:right;width:20%;height:600px;visibility:hidden;">Text area</div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多