2015-11-03 51 views
0

我正在使用US-Map插件通過新聞簽名(https://newsignature.github.io/us-map/)。我已經建立了一個圖表來比較每個州點擊的不同州法律。點擊所有項目的活動狀態

現在我可以比較3種不同的狀態,用戶可以關閉狀態並單擊不同的狀態進行比較。

當您單擊一個狀態時,您將獲得一個活動狀態。一旦你點擊另一個狀態,即活動狀態消失和另一個狀態。我無法弄清楚如何爲每個被點擊的狀態配置一個活動狀態。

$('#' + data.name).css('fill', '#0075b9'); 

該行使得狀態在點擊時處於活動狀態。我會假設這需要適用於所有點擊狀態,但將其添加到點擊狀態不會執行任何操作。

這裏與當前功能的小提琴設置:https://jsfiddle.net/yurtqy87/1/

任何想法?

注意:爲了節省時間,我只輸入了紐約州,加利福尼亞州,喬治亞州,阿拉斯加州,阿拉巴馬州和佛羅里達州的數據。點擊任何其他狀態將不會在下面的列中產生任何結果。

+0

我不完全確定你要做什麼,但是當你在你的小提琴上點擊'California'時,你上面的代碼行試圖設置css的id爲'ca' 。但是DOM中沒有任何id爲'ca'的東西。如果您調試javascript,您可以在控制檯中鍵入$('#ca'),並獲得'null'。 –

+0

對不起,我正在處理的js文件中添加了一行代碼,它爲每個狀態提供了與該行關聯的標識符。我編輯了小提琴,現在你會看到一個點擊,每次點擊都會爲該特定狀態創建一個div。您還會看到,現在每個被點擊的狀態都保持活動狀態,直到點擊新狀態。這個想法是讓每個被點擊的狀態都顯示爲活動狀態。 https://jsfiddle.net/yurtqy87/10/ –

回答

0

我看了一下庫API和方法,你必須得到它。我會用一個數組來存儲所選的陳述。

var selectedStates = ['XX', 'YY', 'ZZ']; 

創建後,你可以將它們上色不同

stateSpecificStyles: { 
     'XX': {fill: 'red'}, 
     'YY': {fill: 'red'}, 
     'ZZ': {fill: 'red'} 
    } 

當按下的狀態,如果是在選擇,你應該將其刪除,如果你不應該在它

刪除「點擊」處理程序中的

var toRemove = data.name; 

selectedStates = jQuery.grep(selectedStates, function(value) { 
    return value != toRemove; 
}); 

After刪除或添加一個狀態,只需刷新地圖和你的用戶界面。

+0

我該如何重新加載地圖? –

+0

使用新選項重新初始化地圖(添加/刪除狀態) –

相關問題