2015-04-21 2 views
2

Я использую jVectorMaps. По умолчанию, он не позволяет выбрать регионы КРОМЕ >>regionsSelected: trueВ jVectorMap, как выбрать регион ТОЛЬКО ЕСЛИ условие выполнено?

Здесь не то, что я пытаюсь достичь:

Когда пользователь щелкает по области он/она получает побудил вопрос, взятый из загруженного JSON файл. Мне нужен цвет области для того чтобы изменить ТОЛЬКО в случае, если ответ на вопрос верен.

Мой код до сих пор:

$(function(){ 
    map = new jvm.Map({ 
    container: $('#map'), 
    map: 'world_mill_en',//map file 
    backgroundColor: ['#1E90FF'],//map background color  
    regionsSelectable:true,//this needs to be true to be able to select a region 

    onRegionClick: function(event, code){ 
     var map = $('#map').vectorMap('get', 'mapObject'); 
     var regionName = map.getRegionName(code); 
     $.getJSON('../countries.json', function(data) { 
     for (var i in data.country) { 
      if (data.country[i].name === regionName){ 
      var answer = prompt(data.country[i].question, "Type your answer here."); 
      if(data.country[i].answer === answer){ 
       alert("Correct!"); 
      }else{ 
       alert("Wrong. Try again."); 
      } 
      } 
     } 
     }); 
    }, 

    }); 
}); 

Я думаю, что я должен найти способ, чтобы динамически изменять значение свойства regionsSelectable после условие if(data.country[i].answer === answer) выполнено. Если это не так, значение свойства regionsSelectable должно оставаться false.

Я новичок, поэтому любая критика более чем приветствуется, я, вероятно, в любом случае отсюда! :)

ответ

0

Попробовать это ..

$(function(){ 
      map = new jvm.Map({ 
      container: $('#map'), 
      map: 'world_mill_en',//map file 
      backgroundColor: ['#1E90FF'],//map background color  
      regionsSelectable:true,//this needs to be true to be able to select a region 

      onRegionClick: function(event, code){ 
       var map = $('#map').vectorMap('get', 'mapObject'); 
       var regionName = map.getRegionName(code); 
       $.getJSON('../countries.json', function(data) { 
       for (var i in data.country) { 
        if (data.country[i].name === regionName){ 
        var answer = prompt(data.country[i].question, "Type your answer here."); 
        if(data.country[i].answer === answer){ 
         map.setSelectedRegions(code);; 
        }else{ 
        map.clearSelectedRegions(); 

        } 
        } 
       } 
       }); 
      }, 

      }); 
     }); 
+0

Эй, спасибо! Сейчас это работает. Я могу выбрать страну в зависимости от состояния. Но скажите, если у меня выбрано 5 стран (это 5 правильных ответов подряд), и я отвечаю на один неправильно, что все выбранные страны не выбраны. Мне нужна только одна страна, которую нужно отменить. Дайте мне знать, если у вас есть мысли по этому поводу. Еще раз спасибо – codeWolf

+0

Попробуйте метод map.getSelectedRegion(), чтобы получить выбранные регионы перед каждым регионом, нажмите – CPR43

+0

, спасибо, я отмечу это как ответ, так как он меня на правильном пути – codeWolf

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