在使用echarts繪制地理坐標地圖時,一些用戶可能會遇到JSON數據加載太慢的問題。這可能會導致頁面卡頓、渲染緩慢、甚至崩潰。
var chart = echarts.init(document.getElementById('main'));
chart.showLoading();
$.get('json/world.json', function (geoJson) {
chart.hideLoading();
echarts.registerMap('world', geoJson);
chart.setOption({
series: [{
type: 'map',
map: 'world'
}]
});
});
以上是echarts加載地理坐標地圖的代碼,通常都是使用ajax異步加載json數據。然而當我們的json數據比較大時,就會出現加載緩慢的問題。
解決方法如下:
/*
* 原有$.get方法進行改造
* @param url 請求json地址
* @param callback 回調函數,成功后將json結果傳參回調
*/
function jsonReq(url, callback) {
$.ajax({
url: url,
dataType: 'json',
success: function (data) {
callback && callback(data);
},
error: function (xhr, type, errorThrown) {
console.log('xhr:', xhr, 'type:', type, 'errorThrown:', errorThrown);
}
});
}
在此我們對$.get方法進行改造,改為使用$.ajax方法。
var chart = echarts.init(document.getElementById('main'));
chart.showLoading();
jsonReq('json/world.json', function (geoJson) {
chart.hideLoading();
echarts.registerMap('world', geoJson);
chart.setOption({
series: [{
type: 'map',
map: 'world'
}]
});
});
修改后的代碼將加載json的工作交給了工具函數jsonReq,這樣就可以解決JSON數據加載太慢導致頁面卡頓的問題了。