我在启用了drilledown的应用程序中使用了高图,它对于给定的美国示例数据来说效果很好。

但这不适用于斯里兰卡的数据。可能是什么问题?

这是我的代码:

  $('#container').highcharts('Map', {
        chart : {
            events: {
                drilldown: function (e) {

                    if (!e.seriesOptions) {
                        var chart = this,
                            mapKey = 'countries/lk/' + e.point.drilldown + '-all',
                            // Handle error, the timeout is cleared on success
                            fail = setTimeout(function () {
                                if (!Highcharts.maps[mapKey]) {
                                    chart.showLoading('<i class="icon-frown"></i> Failed loading ' + e.point.name);

                                    fail = setTimeout(function () {
                                        chart.hideLoading();
                                    }, 1000);
                                }
                            }, 3000);

                        // Show the spinner
                        chart.showLoading('<i class="icon-spinner icon-spin icon-3x"></i>'); // Font Awesome spinner

                        // Load the drilldown map
                        $.getScript('https://code.highcharts.com/mapdata/' + mapKey + '.js', function () {

                            data = Highcharts.geojson(Highcharts.maps[mapKey]);

                            // Set a non-random bogus value
                            $.each(data, function (i) {
                                this.value = i;
                                  console.log(i);
                            });


                            // Hide loading and add series
                            chart.hideLoading();
                            clearTimeout(fail);
                            chart.addSeriesAsDrilldown(e.point, {
                                name: e.point.name,
                                data: data,
                                dataLabels: {
                                    enabled: true,
                                    format: '{point.name}'
                                }
                            });
                        });
                    }


                    this.setTitle(null, { text: e.point.name });
                },
                drillup: function () {
                    this.setTitle(null, { text: 'Sri Lanka' });
                }
            }
        }


JSFiddle链接

最佳答案

斯里兰卡的Highmaps Map Collection中没有向下钻取数据。如果向下滚动页面,您会看到at the moment仅有以下数据低于国家/地区级别(例如admin2级别)的国家/地区:加拿大,德国,法国,荷兰,挪威和美国。

当您单击区域时,小提琴正在尝试从相应的URL检索数据:

mapKey = 'countries/lk/' + e.point.drilldown + '-all',


对于斯里兰卡来说,失败是因为每个地区的JS文件都不存在。

the Highmaps docs中有更多有关创建地图的信息:


  Highmaps从GeoJSON(描述的开放标准)加载其地图
  地理特征。大多数GIS软件都支持以下格式:
  从Shapefile或KML导出中导出。进一步了解API
  参考并观看现场演示。
  
  您的地图有三个基本来源:
  
  
  使用我们的地图集合。阅读地图上的教程文章
  收藏开始。
  在线查找SVG地图并使用进行转换
  我们的(实验性)在线转换器。
  从头开始创建自己的地图
  使用SVG编辑器,然后将其在线转换。阅读我们的教程
  高图的自定义地图。
  


关于the Highmaps Maps Collection


  为了方便起见,Highmaps提供了免费的地图集,
  优化用于Highmaps。对于普通地图,它可以节省您
  查找或绘制合适的SVG或GeoJSON地图的麻烦。
  
  对于Admin2,我们仅编译了选定的国家/地区,这些地图
  由具有其自己许可的国家文件创建
  在SVG地图和其他格式文件中指定为元数据。
  如果您想念您的国家/地区,请与我们联系,我们将尽力找到一个
  合适的shapefile并生成更多地图。

09-19 08:18