2013-08-06 2 views
3

С jquery и jqvmap я устанавливаю несколько цветов состояния на карте США. Например, чтобы окрасить все состояния, которые начинаются с «А» красным, это работает:jqvmap - применение цвета для нескольких состояний/областей

jQuery('#vmap').vectorMap('set', 'colors', {al: 'red'}); 
jQuery('#vmap').vectorMap('set', 'colors', {ak: 'red'}); 
jQuery('#vmap').vectorMap('set', 'colors', {az: 'red'}); 
jQuery('#vmap').vectorMap('set', 'colors', {ar: 'red'}); 

есть способ сделать это короче? Я хотел бы сделать это:

var astates = ["al", "ak", "az", "ar"]; 
for (var i = 0; i < astates.length; ++i) { 
    jQuery('#vmap').vectorMap('set', 'colors', { 'astates[i]' : 'red'}); 
} 

Но это не работает. Благодаря

+0

не уверен, если это была просто опечатка, когда отвечал на вопрос, но я не думаю, что ваша переменная astates должна быть в кавычках. Но вы правы, что это должна быть строка ... так что либо избегайте этих цитат, либо уродливые старые '' '+ astates [i] +' '' Ваша петля выглядит так, как будто она должна работать иначе. – hardba11

+0

Смотрите этот вопрос: http://stackoverflow.com/questions/15510913/jqvmap-how-do-i-set-a-state-color-in-the-usa-map – Upperstage

ответ

3
var fc = 'red'; // you'll need this if you'll want to change the whole group color someday 
jQuery('#vmap').vectorMap('set', 'colors', {al: fc, ak: fc, az: fc, ar:fc}); 
+0

спасибо, это сделало трюк – jcaponi

2
colorsST = {}; 
var astates = ["al", "ak", "az", "ar"]; 
for (var i = 0; i < astates.length; ++i) { 
    colorST[i] = 'red'; 
    jQuery('#vmap').vectorMap('set', 'colors', colorST); 
} 
+0

Выполняя 'colorST [i]' вы назначаете не состояния как свойства, а скорее их индекс. Это то, что вы получили бы: '0: 'red', 1: 'red'' и т. Д. Поэтому вместо этого вы должны сделать' colorST [astates [i]] =' red''. Это назначит имена состояний по назначению. – yulolimum

Смежные вопросы