Я много боролся с этим:
Я пытаюсь добавить некоторые цвета к карте (JQuery Vector Maps). Синтаксис для добавления цвета в страну следующий (JQuery)
$('#map').vectorMap('set', 'colors', { br: '#CCDDAA' });
$('#map').vectorMap('set', 'colors', { us: '#CCDDAA' });
Как вы можете видеть, вы можете пойти с этим подходом или следующим:
var gdpData = {"br":"#CCDDAA", "us":"#CCDDAA"};
$('#map').vectorMap('set', 'colors', gdpData);
Дело в том, что мой контроллер возвращает информацию JSON следующим образом:
[{"Id":2,"Country":"US","CountryCode":"us"},{"Id":4,"Country":"BR","CountryCode":"br"}]
У меня есть нижний регистр CountryCode, который хорош, и цвет, который я хочу установить на стороне JS, в зависимости от некоторых значений.
Это то, что я сделал: я думаю, у меня есть 2 пути,
Сначала манипулируйте JSON, чтобы он выглядел как {"br":"#CCDDAA", "us":"#CCDDAA"};
но я не знаю, как это сделать :(
Или вызовите набор цветов по строкам, однако для этого подхода требуется код страны без кавычек.
$.ajax({
dataType: "json",
url: '/Statistics/GetCoutriesListed/',
type: 'GET',
success: function (data)
{
$.each([data], function (index, value)
{
//This is not working of course due to quotes.
$('#map').vectorMap('set', 'colors', value[0].CountryCode: '#CCDDAA');
//And I don't know how to do this :(
$('#map').vectorMap('set', 'colors', { JASON IN CORRECT FORMAT });
});
}
});
Что может быть хорошим подходом к решению этой проблемы? Есть ли у вас какие-либо идеи или рекомендации? Я совсем не силен в JS, JQuery.
Благодарю!
Как насчет чего-то подобного?
$.each([data], function (index, value) {
var f = value[index].CountryCode,
obj = {};
obj[f] = "#CCDDAA";
$('#map').vectorMap('set', 'colors', obj);
});
Вы можете использовать map
для преобразования массива объектов:
var transformedData = arr.map(function (el) {
var obj = {};
obj[el.Country.toLowerCase()] = '#CCDDAA';
return obj;
});
Демо.
#CCDDAA
?data
уже есть и массив, так что вам не нужно использовать[]
при передаче их вeach
.