谷歌图表与geohash

时间:2017-02-10 13:09:43

标签: javascript charts google-visualization

您正在使用googleCharts https://developers.google.com/chart/interactive/docs/gallery/geochart 我需要将GeoHash设置为列以进行绘图,但我尝试并且此时正在进行工作 凭借纬度和经度,它的作品

  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
  <script type="text/javascript" src="<?php echo  base_url();?>assets/js/script.js"></script>
  <script type="text/javascript">
  google.charts.load('upcoming', {'packages': ['geochart']});
     google.charts.setOnLoadCallback(drawMarkersMap);

      function drawMarkersMap() {
        var data = new google.visualization.DataTable();
       data.addColumn('number', 'Latitude');
       data.addColumn('number', 'Longitude');
       data.addColumn('string', 'Label');
       data.addColumn('number', 'Value 1');
       data.addColumn('number', 'Value 2');

       data.addRows([
           [-22.764042, -43.39921, 'Foo', 2.86, 4],
           [-22.755635, -43.460325, 'Bar', 5, 2],
           [-22.912897, -43.200295, 'Baz', 0.50, 1],
           [-22.805776, -43.37292, 'Cad', 6.67, 2],
           [-23.532905, -46.63952, 'Qud', 33.33, 5]
       ]);
       var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
  chart.draw(data, {
      width: 600,
      region: 'BR',//rgiomn
       colorAxis: {colors: ['green', 'blue']} //color de transicion


  });

    };
 </script>

但如果我尝试使用geohash,请在控制台上显示此错误:

  

drawMarkersMap - cargamapa:72ReferenceError:找不到变量:   gbsuv

我的vars

  data.addRows([
       ['gbsuv', 'Foo', 2.86, 4],
       ['gbsuv', 'Bar', 5, 2],
       ['gbtst' 'Baz', 0.50, 1],

   ]);

1 个答案:

答案 0 :(得分:2)

请分享变量的价值......

gbsuv, gbtst, gbtse

如果它们是数组([]),那么尝试...

data.addRows([
  [gbsuv[0], gbsuv[1], 'Foo', 2.86, 4],
  [gbsuv[0], gbsuv[1], 'Bar', 5, 2],
  [gbtst[0], gbtst[1], 'Baz', 0.50, 1],
  [gbtse[0], gbtse[1], 'Cad', 6.67, 2]
]);

编辑

地图可视化的data format不支持 geohash

  

支持两种数据格式:

     

1。 Lat-Long对 - 前两列应分别是指定纬度和经度的数字。可选的第三列包含一个字符串,该字符串描述前两列中指定的位置。

     

2. 字符串地址 - 第一列应该是包含地址的字符串。这个地址应该尽可能完整。可选的第二列包含一个描述第一列中位置的字符串。字符串地址加载速度更慢,尤其是当您有超过10个地址时。

但是,您可以使用诸如...之类的库来解码 geohash

latlon-geohash.js

调用函数 - &gt; Geohash.decode(geohash)
将返回一个包含latlon

属性的对象
var gbsuv = Geohash.decode('gbsuv');

data.addRows([
   [gbsuv.lat, gbsuv.lon, 'Foo', 2.86, 4],
   ...
]);