javascript - 使用 Mapbox GL JS 动态添加 Chart.js 对象
问题描述
我正在使用 Mapbox GL JS 和 Chart.js 来可视化带有可点击标记的地图。单击标记时,Chart.js 图形应显示在 Mapbox 弹出窗口中,该图形基于单击标记的信息。现在,这就是我实现它的方式:
var i = 0;
map.on("click", "trips", function (e) {
var coordinates = e.features[0].geometry.coordinates.slice();
var nTripsMonth = e.features[0].properties.nTripsMonth;
while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {
coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;
}
new mapboxgl.Popup()
.setLngLat(coordinates)
.setHTML('<canvas id="foo' + i + '"></canvas>')
.addTo(map);
map.flyTo({center: e.features[0].geometry.coordinates, zoom: 18});
var ctx = document.getElementById('foo' + i).getContext('2d');
console.log(ctx)
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [{
label: 'Distribution',
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
data: nTripsMonth
}]
},
});
i++;
});
这按我想要的方式工作,但是我觉得这不是正确的方法。
解决方案
推荐阅读
- twilio-programmable-chat - Twillio 错误:无法连接:找不到具有唯一名称“默认”的服务实例
- javascript - 在javascript中,这个函数是纯的吗
- typescript - 如何在 typescript 中测试自定义类型,例如类型 ORDER = 'WALK' | '跑'?
- sql - SQL 从 2 个查询创建聚合结果
- php - 将数字添加到以逗号分隔的新行
- c++ - 使用 Boost Beast 和 Ubuntu 18 从 AWS 实例到 Bitmex 的 HTTP 延迟
- r - 在 R 中创建虹膜模型矩阵时出错
- vb.net - 如何在图片框中并排打印三个不同的矩形vb.net
- express - 使用 nonce 或 sha-256 是否允许执行内联事件处理程序?
- java - 在执行文件上传的rest api后,出现500个未记录的错误“连接在响应期间过早关闭”