У меня есть Highmap, который заполняется данными, полученными с помощью getJSON. То, что я хочу достичь, - это кнопка (или выпадающее меню), которая позволяет мне переключаться между двумя или более наборами данных.
Я видел этот вопрос несколько раз по-разному (например, этот), и, читая ответы, у меня есть общее представление о том, что мне нужно делать, но я остаюсь застрявшим. FWIW Я полный новичок, просто пытающийся заставить что-то работать для моих коллег, поэтому моя ошибка может быть фундаментальной или может быть просто синтаксисом.
Теперь, чтобы доказать себе, что я могу сделать это, я попытался реализовать кнопку, которая после щелчка просто переключится на второй набор данных, используя setData. Пока карта отображается правильно, и я знаю, что оба файла JSON загружаются, я не могу заставить коммутатор работать.
Вот моя попытка полностью: http://jsfiddle.net/osc9m3e7/4/
И часть, которая, я уверен, некорректна:
$('#setdata').click(function() {
Highcharts.mapChart.series[0].setData(data1);
});
Я был бы признателен за любые советы, которые помогут мне на правильном пути.
Вы, наверное, заметили, как границы стран становятся все толще при каждом установлении новых данных. Это происходит потому, что объект данных не копируется, а используется напрямую, поэтому он изменяется. Чтобы скопировать определенный объект, вы можете использовать, например, функцию slice()
. Ниже вы можете найти пример, где переключение между наборами данных работает так, как должно.
Справочник по API:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
Пример:
http://jsfiddle.net/4ub0z408/
Ответил ewolden в комментариях. Моя проблема заключалась в том, что я не называл диаграмму и поэтому не мог манипулировать ею с помощью setData. Рабочий пример представлен здесь: http://jsfiddle.net/osc9m3e7/7/
var AccessMap = Highcharts.mapChart('container', {
...
$('#setdata').click(function() {
AccessMap.series[0].setData(data2);
});
setData
для созданного вами объекта старшей диаграммы, а вместо этого используете его для неинициализированного объекта старшей диаграммы. Вот почему я сделал переменнуюchart
в скрипте, которую я разместил.