我在启用了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并生成更多地图。