我使用leaflet
制作地图,对于地图颜色,我使用的是动态概念,其中颜色是基于输入数据的,但是对于地图颜色的某些部分却得到了错误的结果,这就是JavaScript
代表颜色:
data_increase = [5]
data_decrease = [14]
data_equal = [29]
//data is based from input
function color_region_a(fillColor) {
if (data_increase < data_decrease && data_decrease > data_equal)
return 'green';
else if (data_increase < data_decrease && data_decrease < data_equal)
return '#7FFF00'; //color between green and yellow (Chartreuse)
else if (data_equal > data_increase && data_equal > data_decrease)
return 'yellow';
else if (data_equal > data_increase && data_increase > data_decrease)
return 'orange';
else(data_increase > data_decrease && data_increase > data_equal)
return 'red';
};
这是地图部分,但我认为这里没有错:
var region_a = L.geoJson(RegionA, {
"color":"white",
fillColor: color_region_a(),
opacity: 10,
}).addTo(map)
问题是,fillColor
结果总是返回red
,结果应该是#7FFF00
又名chartreuse
,我在哪里做错了?还是有其他方法可以实现我的期望?预先感谢
答案 0 :(得分:3)
它们是数组,您无法按原样进行比较。
您需要使它们成为原始数字(不在数组中),或者像这样进行比较:
import {useEffect} from 'react';
import { useLocation } from 'react-router-dom'
export const useIntro = () => {
const location = useLocation()
const urlPath = location.pathname
const storage = window.localStorage;
const currTimestamp = Date.now();
const timestamp = JSON.parse(storage.getItem(`timestamp${urlPath}`) || '1000');
const timeLimit = 3 * 60 * 60 * 1000; // 3 hours
const hasTimePassed = currTimestamp - timestamp > timeLimit;
useEffect(() => {
hasTimePassed ?
storage.setItem(`timestamp${urlPath}`, currTimestamp.toString())
:
storage.setItem(`timestamp${urlPath}`, timestamp.toString());
}, []);
return hasTimePassed;
};
export default useIntro;
答案 1 :(得分:2)
您犯了2个错误。
[5] > [29]
,这是不正确的。您应该以这种方式5 > 29
比较data_increase[0] < data_decrease[0]
。请参阅下面的演示。
data_increase = [5]
data_decrease = [14]
data_equal = [10]
//data is based from input
function color_region_a(fillColor) {
if (data_increase[0] < data_decrease[0] && data_decrease[0] > data_equal[0])
return 'green';
else if (data_increase[0] < data_decrease[0] && data_decrease < data_equal[0])
return '#7FFF00'; //color between green and yellow (Chartreuse)
else if (data_equal[0] > data_increase[0] && data_equal[0] > data_decrease[0])
return 'yellow';
else if (data_equal[0] > data_increase[0] && data_increase[0] > data_decrease[0])
return 'orange';
else if(data_increase[0] > data_decrease[0] && data_increase[0] > data_equal[0])
return 'red';
};
console.log(color_region_a());