Google Marker GeoChart,创建现有标记列表
Google Marker GeoChart, create a list of existing markers
类似于饼图如何列出图表中您可以悬停的所有属性:
https://developers.google.com/chart/interactive/docs/gallery/piechart
这可以用标记 GeoChart 以任何方式完成吗?一切都很好,除了我真的很想在我的地图上列出所有城市,并且能够将鼠标悬停在该列表的条目上并有正确的标记 "react" 。我还没有找到任何似乎使这成为可能的东西。
首先,使用以下图表选项...
tooltip: {
trigger: 'both'
}
这将导致工具提示在用户悬停和选择图表时同时显示。
然后在您的 table/列表中,当用户将鼠标悬停在一行上时,
使用图表方法 --> setSelection
这将导致工具提示出现。
chart.setSelection([{row: sender.target.parentNode.rowIndex - 1}]);
然后在用户离开 table 行时清除选择。
chart.setSelection([]);
请参阅以下工作片段...
google.charts.load('current', {
packages: ['geochart', 'table'],
mapsApiKey: 'AIzaSyD-9tSrke72PouQMnMX-a7eZSW0jkFMBWY'
}).then(function () {
var data = google.visualization.arrayToDataTable([
['Country', 'Popularity'],
['Germany', 200],
['United States', 300],
['Brazil', 400],
['Canada', 500],
['France', 600],
['RU', 700]
]);
var containerChart = document.getElementById('chart');
var containerTable = document.getElementById('table');
var chart = new google.visualization.GeoChart(containerChart);
var table = new google.visualization.Table(containerTable);
google.visualization.events.addListener(table, 'ready', function () {
chart.draw(data, {
tooltip: {
trigger: 'both'
}
});
$(containerTable).find('tbody > tr > td').on('mouseenter', markerShow);
$(containerTable).find('tbody > tr > td').on('mouseleave', markerHide);
});
table.draw(data);
function markerShow(sender) {
chart.setSelection([{row: sender.target.parentNode.rowIndex - 1}]);
}
function markerHide(sender) {
chart.setSelection([]);
}
});
html, body {
height: 100%;
margin: 0px 0px 0px 0px;
overflow: hidden;
padding: 0px 0px 0px 0px;
}
#chart {
height: 100%;
}
.flex-row {
display: flex;
flex-direction: row;
height: 100%;
}
.flex-grow {
flex-basis: 0;
flex-grow: 1;
flex-shrink: 1;
}
.flex-static {
flex-grow: 0;
flex-shrink: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div class="flex-row">
<div class="flex-grow">
<div id="chart"></div>
</div>
<div class="flex-static">
<div id="table"></div>
</div>
</div>
类似于饼图如何列出图表中您可以悬停的所有属性:
https://developers.google.com/chart/interactive/docs/gallery/piechart
这可以用标记 GeoChart 以任何方式完成吗?一切都很好,除了我真的很想在我的地图上列出所有城市,并且能够将鼠标悬停在该列表的条目上并有正确的标记 "react" 。我还没有找到任何似乎使这成为可能的东西。
首先,使用以下图表选项...
tooltip: {
trigger: 'both'
}
这将导致工具提示在用户悬停和选择图表时同时显示。
然后在您的 table/列表中,当用户将鼠标悬停在一行上时,
使用图表方法 --> setSelection
这将导致工具提示出现。
chart.setSelection([{row: sender.target.parentNode.rowIndex - 1}]);
然后在用户离开 table 行时清除选择。
chart.setSelection([]);
请参阅以下工作片段...
google.charts.load('current', {
packages: ['geochart', 'table'],
mapsApiKey: 'AIzaSyD-9tSrke72PouQMnMX-a7eZSW0jkFMBWY'
}).then(function () {
var data = google.visualization.arrayToDataTable([
['Country', 'Popularity'],
['Germany', 200],
['United States', 300],
['Brazil', 400],
['Canada', 500],
['France', 600],
['RU', 700]
]);
var containerChart = document.getElementById('chart');
var containerTable = document.getElementById('table');
var chart = new google.visualization.GeoChart(containerChart);
var table = new google.visualization.Table(containerTable);
google.visualization.events.addListener(table, 'ready', function () {
chart.draw(data, {
tooltip: {
trigger: 'both'
}
});
$(containerTable).find('tbody > tr > td').on('mouseenter', markerShow);
$(containerTable).find('tbody > tr > td').on('mouseleave', markerHide);
});
table.draw(data);
function markerShow(sender) {
chart.setSelection([{row: sender.target.parentNode.rowIndex - 1}]);
}
function markerHide(sender) {
chart.setSelection([]);
}
});
html, body {
height: 100%;
margin: 0px 0px 0px 0px;
overflow: hidden;
padding: 0px 0px 0px 0px;
}
#chart {
height: 100%;
}
.flex-row {
display: flex;
flex-direction: row;
height: 100%;
}
.flex-grow {
flex-basis: 0;
flex-grow: 1;
flex-shrink: 1;
}
.flex-static {
flex-grow: 0;
flex-shrink: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div class="flex-row">
<div class="flex-grow">
<div id="chart"></div>
</div>
<div class="flex-static">
<div id="table"></div>
</div>
</div>