问题
I'm trying to insert a Google line chart into a standalone Leaflet popup. I have the chart generation code in the header as instructed here, and then I put the div element in the popup.
var popup = L.popup()
.setLatLng([51.5, -0.09])
.setContent('<div id="curve_chart" style="width: 400px; height: 200px"></div>')
.openOn(mymap);
This just creates an empty 400x200 popup. I'm pretty sure that the problem arises because the chart generation script can't find the div element because it doesn't exist yet, but I don't know how to fix it. I tried moving the script after the declaration of the popup, but that didn't do anything. How can I display the chart in the popup?
回答1:
try structuring the code similar to the following snippet...
1) load google charts before anything else
2) then load other stuff you need
3) then try opening the popup
// run this before anything else on the page
google.charts.load('current', {
callback: initPage,
packages: ['corechart']
});
function initPage() {
// do normal start up stuff here
// ...
// open the popup
var popup = L.popup()
.setLatLng([51.5, -0.09])
.setContent('<div id="curve_chart" style="width: 400px; height: 200px"></div>')
.openOn(mymap);
drawChart();
}
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows([
['Mushrooms', 3],
['Onions', 1],
['Olives', 1],
['Zucchini', 1],
['Pepperoni', 2]
]);
var container = document.getElementById('curve_chart');
var chart = new google.visualization.LineChart(container);
chart.draw(data);
}
来源:https://stackoverflow.com/questions/43353488/put-google-line-chart-in-leaflet-popup