簡體   English   中英

使用傳單的Choropleth地圖未顯示正確的樣式

[英]Choropleth map using leaflet not displaying correct style

我在縣一級創建了一張2016年選舉的地圖,如果一個政黨在一個縣中獲得的選票多於另一政黨,則該縣將獲得該政黨的顏色。 所以很明顯,我使用條件語句。 幾乎所有縣都很好,它們都遵守規定,但有些不滿意。 例如,得克薩斯州格雷縣(Gray County)的抽樣率僅約為9%,而實際稅率僅為88%。 出於某種原因,地圖以藍色顯示該縣,而不是gop配色方案:

您可以在這里找到地圖: https : //sushirittoman.github.io/maps/counties_project/index.html

這是我為地圖編寫的代碼,大量借鑒了Choropleth地圖的傳單教程( https://leafletjs.com/examples/choropleth/ ):

//Red palette for Gop 
function getColorGop(v) {
            return v > 70 ? '#800026' :
                   v > 50 ? '#BD0026' :
                   v > 40 ? '#E31A1C' :
                   v > 30 ? '#FC4E2A' :
                   v > 20 ? '#FD8D3C' :
                   v > 10 ? '#FEB24C' :
                            '#FED976' ;                                  

}

//Blue palette for Dems
function getColorDem(v) {
            return v > 70 ? '#08589e':
                   v > 50 ? '#2b8cbe':
                   v > 40 ? '#4eb3d3':
                   v > 30 ? '#7bccc4':
                   v > 20 ? '#a8ddb5':
                   v > 10 ? '#ccebc5':
                            '#e0f3db';                               

}

//Ultimate style, where we insert the conditional statement
function style(feature) {
            if ([feature.properties.per_dem * 100] > [feature.properties.per_gop * 100]) {
                return {
                    fillColor: getColorDem(feature.properties.per_dem * 100),
                    weight: 1,
                    opacity: 1,
                    color: 'black',                    
                    fillOpacity: 1                        
                }                                        
            } 
            else {
                return {
                    fillColor: getColorGop(feature.properties.per_gop * 100),
                    weight: 1,
                    opacity: 1,
                    color: 'black',                   
                    fillOpacity: 1                        
                };
}        

我感到難過。 我希望這可以成為我的第一個官方非教程網絡地圖。 這個問題似乎是反常的。 我非常感謝您的想法。

您的比較寫為

[feature.properties.per_dem * 100] > [feature.properties.per_gop * 100]

[...] Javascript是用於聲明數組的語法,這意味着您正在嘗試確定數組是否大於另一個數組,而這可能不是您想要的(鑒於JS中的類型轉換如何工作,可以預測結果可能很棘手)。

嘗試

if (feature.properties.per_dem * 100 > feature.properties.per_gop * 100)

或( +可以將geoJSON中的字符串轉換為數字)

if (+feature.properties.per_dem > +feature.properties.per_gop)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM