Highcharts 如何在highmap中移动岛屿

Highcharts 如何在highmap中移动岛屿,highcharts,geojson,Highcharts,Geojson,我从西班牙得到了一张包括加那利岛在内的地图,但是这些岛屿太远了,而且地图看起来很小,有没有办法把这些岛屿移到西班牙附近?一些国家的地图。您可以使用点类提供的新增功能将区域移动到位。我们将使用以下(稍加修改的)代码: //将SVG路径偏移x和y Highcharts.Point.prototype.offsetPath=函数(x、y、重画、动画){ var path=this.path | |[], isX=真, i=0; 对于(;i

我从西班牙得到了一张包括加那利岛在内的地图,但是这些岛屿太远了,而且地图看起来很小,有没有办法把这些岛屿移到西班牙附近?

一些国家的地图。您可以使用
类提供的新增功能将区域移动到位。我们将使用以下(稍加修改的)代码:

//将SVG路径偏移x和y
Highcharts.Point.prototype.offsetPath=函数(x、y、重画、动画){
var path=this.path | |[],
isX=真,
i=0;
对于(;i
移动点。然后,在加载您的西班牙地图后,您可以将这些区域移动到所需的位置。我在这里举了一个例子():

Highcharts.mapChart('container'){
// ...
},功能(图表){
for(设i=0;i
这将使Melilla、Las Palmas、Tenerife和Baleares靠近示例中提供的X和Y值(第一个和第二个参数),以及重绘(第三个参数),但不设置动画(第四个参数)


Highcharts提供的地图。

如果在插入中找不到显示加那利岛的现有地图,则必须自己编辑地图。您当前的地图是哪种格式的?它是一个json文件
// Offset an SVG path by x and y
Highcharts.Point.prototype.offsetPath = function (x, y, redraw, animate) {
    var path = this.path || [],
        isX = true,
        i = 0;
    for (; i < path.length; ++i) {
        if (Highcharts.isNumber(path[i])) {
            path[i] += isX ? x : y;
            isX = !isX;
        }
    }
    this.update({
        dataLabels: {
            x: this.series.xAxis.toPixels(x) - this.series.xAxis.toPixels(0),
            y: this.series.yAxis.toPixels(y) - this.series.yAxis.toPixels(0)
        },
        path: path
    }, redraw, animate);
};
Highcharts.mapChart('container', {
    // ...
}, function(chart) {
    for(let i = 0; i < this.series[0].points.length; i++) {
        if(this.series[0].points[i]['hc-key'] == 'es-me') { // Melilla
            this.series[0].points[i].offsetPath(0, -900, true, false);
        } else if(this.series[0].points[i]['hc-key'] == 'es-gc') { // Las Palmas
            this.series[0].points[i].offsetPath(-1200, 0, true, false);
        } else if(this.series[0].points[i]['hc-key'] == 'es-tf') { // Tenerife
            this.series[0].points[i].offsetPath(-1200, 0, true, false);
        } else if(this.series[0].points[i]['hc-key'] == 'es-pm') { // Baleares
            this.series[0].points[i].offsetPath(-800, 0, true, false);
        }
    }
});