2016-12-16 34 views
2

我遇到了一些顯示國家值的問題。事情是,我想展示某個團隊的足球隊員來自哪裏。由於他們中的很多人具有相同的國籍,因此在全國範圍內越過時,geochart僅顯示數組中的姓氏,但我希望它顯示所有姓名。 這是代碼:Google Geochart - 相同的國家,不同的值

var chart = function (item) { 
    body = document.getElementById("regions_div"); 
    body.innerHTML = " "; 
    var places = []; 
    var names = []; 
    for (var i = 0; i<item.length; i++) { 
    person = item[i]; 
    country = person.nationality; 
    name = person.name; 
    places.push(country); 
    names.push(name); 
    }; 
    console.log(places); 
    console.log(names); 

    google.charts.load('upcoming', {'packages':['geochart']}); 
    google.charts.setOnLoadCallback(drawRegionsMap); 

    function drawRegionsMap() { 

    var data = []; 
    var header = ["Country", "Name"]; 
    data.push(header); 
    for (var i = 0; i < places.length; i++) { 
     var temp = []; 
     temp.push(places[i]); 
     temp.push(names[i]); 
     console.log(temp); 
     data.push(temp); 
    } 

    console.log(data); 
    var chartdata = google.visualization.arrayToDataTable(data); 

    var options = {}; 

    var chart = new google.visualization.GeoChart(document.getElementById('regions_div')); 
    chart.draw(chartdata, options); 
    } 
} 

而且截圖,比如這次有來自英格蘭多個玩家,但只有數組中的最後一個顯示: example

感謝您的幫助!

+1

碰到了同樣的問題,這個星期顯示學生在大學 - 必須建立一個自定義的工具提示 - 使用['組()'方法(https://developers.google。 com/chart/interactive/docs/reference#google_visualization_data_group)在國家進行分組,併爲數據中的每一行建立工具提示 - 如果您可以共享一個數據樣本('item'),我可以舉一個例子。 .. – WhiteHat

+0

@WhiteHat這將是偉大的。 Item只是API的結果,通過它我可以得到名字和國家。團隊的最終數據爲: 'var places = [「Sam Johnstone」,「Chris Smalling」,「Phil Jones」,「Luke Shaw」];' 'var names = [「United Kingdom」,「United Kingdom 「,」英國「,」英國「,];' –

回答

1

以下是構建定製工具提示在每個國家

以顯示所有名稱group()方法由國家

那麼工具提示中chartdata

每行更新用於組的名稱的一例

所有發現每個國家

看到下面的工作片段的名稱...

google.charts.load('current', { 
 
    callback: drawRegionsMap, 
 
    packages:['geochart'] 
 
}); 
 

 
function drawRegionsMap() { 
 
    var container = document.getElementById('regions_div'); 
 
    container.innerHTML = ''; 
 
    var names = ["Sam Johnstone", "Chris Smalling", "Phil Jones", "Luke Shaw"]; 
 
    var places = ["United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom"]; 
 

 
    var data = []; 
 
    var header = ["Country", "Name"]; 
 
    data.push(header); 
 
    for (var i = 0; i < places.length; i++) { 
 
    var temp = []; 
 
    temp.push(places[i]); 
 
    temp.push(names[i]); 
 
    data.push(temp); 
 
    } 
 

 
    var chartdata = google.visualization.arrayToDataTable(data); 
 

 
    // group data by country, name 
 
    var groupdata = google.visualization.data.group(
 
    chartdata, 
 
    [0, 1], 
 
    [{ 
 
     aggregation: google.visualization.data.count, 
 
     column: 1, 
 
     label: "Name", 
 
     type: "number" 
 
    }] 
 
); 
 

 
    // update tooltip for each chart data row 
 
    for (var i = 0; i < chartdata.getNumberOfRows(); i++) { 
 
    // find group rows for current country 
 
    var locationRows = groupdata.getFilteredRows([{ 
 
     column: 0, 
 
     value: chartdata.getValue(i, 0) 
 
    }]); 
 

 
    // build tooltip of all names for current country 
 
    var nameTooltip = ''; 
 
    locationRows.forEach(function (index) { 
 
     if (nameTooltip !== '') { 
 
     nameTooltip += ', '; 
 
     } 
 
     nameTooltip += groupdata.getValue(index, 1); 
 
    }); 
 

 
    // update tooltip 
 
    chartdata.setValue(i, 1, nameTooltip); 
 
    } 
 

 
    var chart = new google.visualization.GeoChart(container); 
 
    chart.draw(chartdata); 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="regions_div"></div>

+0

希望這可以幫助,抱歉花了這麼長時間來回應 - 很基本的例子,但應該得到的重點... – WhiteHat

+0

感謝,作品像一個魅力! –

相關問題