javascript - 使用导航箭头时,图表 JS 图表未在 ArcGIS 弹出窗口中呈现

标签 javascript chart.js arcgis-js-api esri-javascript-api

我在我的点的弹出窗口中放了一个图表。在初始单击时,弹出窗口会显示图表,如果我在弹出窗口上使用向前导航箭头,则会呈现下一个图表。但是,如果我使用后退箭头,图表将不会再次呈现。生成图表的方法似乎没有第二次触发。任何帮助表示赞赏。我的代码如下。弹出:

            popupTemplate: {
            title: "{Location}",
            content: [{
                type: "text",
                text: "Sample Location: {Type} </br> Survey: {Survey} </br> {Location:getSurveyInfo} <div id='chartDiv'><canvas id='chartArea{Location}'>{Location:createChart}</canvas></div>"
            },
            {
                type: "attachments"
            }]
        }

图表:

    createChart = function (location) {
    var date = new Date();
    var chartArea = "chartArea" + location;
    var sub = location.substring(0, 2);

    getData(date.getFullYear(), [[location]], function (data) {
        var maxScale = Math.max(...data[0].tData);
        var colors = [["#34eb58", "#0000ff"]];
        var chartData = buildChartData(name, maxScale, data, colors, null);
        var ctx = document.getElementById(chartArea);
        var chart = new Chart(ctx, chartData);

    }, getChartDataError)



}

最佳答案

我认为您不应该为弹出模板使用文本内容类型。在您的情况下,使用返回 HTML 元素的函数会更容易。

    popupTemplate: {
        title: "{Location}",
        content: createPopup
    }

在这里构建您的 popupElement 并在其中插入图表:

function createPopup(graphic) {
    try {
        var location = graphic.getAttribute("Location");
        var popupElement = document.createElement("div");
        popupElement.innerHTML = "Sample Location: " + graphic.getAttribute("Type") + "</br> Survey: " + graphic.getAttribute("Survey") + "</br>" + getSurveyInfo(location) + "<div class='chartDiv'></div>"
        var date = new Date();
        var sub = location.substring(0, 2);
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');

        getData(date.getFullYear(), [[location]], function(data) {
            var maxScale = Math.max(...data[0].tData);
            var colors = [["#34eb58", "#0000ff"]];
            var chartData = buildChartData(name, maxScale, data, colors, null);
            var chart = new Chart(ctx, chartData);
         }, getChartDataError);

         popupElement.querySelector(".chartDiv").appendChild(canvas);
         return popupElement;
    } catch(error) {
        console.error(error)
    }
}

查看工作演示:http://jsfiddle.net/bspa906m/3/

关于javascript - 使用导航箭头时,图表 JS 图表未在 ArcGIS 弹出窗口中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53508633/

相关文章:

javascript - 如何处理嵌套的 Dojo 延迟

javascript - 使用查询字符串强制页面重新加载

javascript - 为什么使用此功能拖动一个元素时两个元素都会移动?

javascript - 添加一个书签,它只是 javascript,不是 URL

javascript - "TypeError: chart_js__WEBPACK_IMPORTED_MODULE_9__.default is not a constructor"

javascript - Chart.js 条形厚度

javascript - 表单输入字段验证模式

javascript - 使用 Chart.js jQuery 创建数学图表

javascript - 在映射 API 中查找图层渲染时间

javascript - 当我们的设备从纵向模式转向横向模式时, map 完全加载时是否会触发任何 map 事件?