pablojim/highcharts-ng

How to configure Map with overlaid pie charts function in map config.

bhavesh-shahu opened this issue · 0 comments

This is jsfiddle map with overlaid pie chart.
https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/maps/demo/map-pies/

The basic map chart is working. But not loading the pie chart on a map.
How I can use this function in the chart config.

Highcharts.each(chart.legend.allItems, function(item) {
var old = item.setVisible;
item.setVisible = function() {
var legendItem = this;
old.call(legendItem);
Highcharts.each(chart.series[0].points, function(point) {
if (chart.colorAxis[0].dataClasses[point.index].name === legendItem.name) {
// Find this state's pie and set visibility
Highcharts.find(chart.series, function(item) {
return item.name === point.id;
}).setVisible(legendItem.visible, false);
}
});
chart.redraw();
};
});

Highcharts.each(chart.series[0].points, function(state) {
if (!state.id || !state.properties) {
return; // Skip points with no data, if any
}

                // var pieOffset = state.pieOffset || {},
                //     centerLat = parseFloat(state.properties.latitude),
                //     centerLon = parseFloat(state.properties.longitude);

                // Add the pie for this state
                chart.addSeries({
                    type: 'mappie',
                    name: state.id,
                    zIndex: 6,
                    sizeFormatter: function() {
                        var yAxis = this.chart.yAxis[0],
                            zoomFactor = (yAxis.dataMax - yAxis.dataMin) /
                            (yAxis.max - yAxis.min);
                        return Math.max(
                            this.chart.chartWidth / 45 * zoomFactor, // Min size
                            this.chart.chartWidth / 11 * zoomFactor * state.total / 100
                        );
                    },
                    tooltip: {
                        // Use the state tooltip for the pies as well
                        pointFormatter: function() {
                            return state.series.tooltipOptions.pointFormatter.call({
                                id: state.id,
                                villages: state.villages,
                                provinces: state.provinces,
                                states: state.states,
                                countries: state.countries,
                                total: state.total
                            });
                        }
                    },
                    data: [{
                        name: 'Training sessions at villages',
                        y: state.villages,
                        color: "cyan"
                    }, {
                        name: 'Training sessions at provinces',
                        y: state.provinces,
                        color: "blue"
                    }, {
                        name: 'Training sessions at states',
                        y: state.states,
                        color: "green"
                    }, {
                        name: 'Training sessions at countries',
                        y: state.countries,
                        color: "yellow"
                    }],
                    center: {
                        plotX: state.plotX,
                        plotY: state.plotY
                    }
                }, false);
            });

Help is highly appreciated.