我希望Leaflet中圆的颜色取决于变量。 当前代码如下所示,不起作用:
function displayMapLatLng
(lat, lng, boolean, displayInfo) {
var latlng =
new L.LatLng(lat, lng);
var color =
if (boolean =='Y'){
"blue"
}else{
"red"
}
var circle =
new L.circle ((latlng), 20, {color: 'color', opacity:.5})
circle.addTo(map);
任何人都知道如何解决这个问题?
答案 0 :(得分:2)
您的if
语句无效JavaScript。你可以把它写成一个trenary操作:
function displayMapLatLng (lat, lng, boolean, displayInfo) {
var latlng = new L.LatLng(lat, lng);
var color = (boolean === 'Y') ? "blue" : "red";
var circle = new L.circle ((latlng), 20, {color: color, opacity:.5})
circle.addTo(map);
}
boolean
也是字符串变量的奇怪名称。如果它实际上是一个布尔值,您可以将操作编写为:
var color = (boolean) ? "blue" : "red";
如果您有更多可能的颜色值,则trenary操作不太有用。然后if ... else if
语句或switch
语句更合适:
var color;
switch(boolean) {
case 'B':
color = 'blue';
break;
case 'R':
color = 'red';
break;
case 'W':
color = 'white';
break;
case 'K': // as in kobolt
color = 'black';
break;
default:
color = 'yellow';
break;
}
当没有其他案例与default
匹配时,将使用boolean
案例。
答案 1 :(得分:0)
我怀疑你选择颜色的代码有语法错误。
如果typeof boolean === 'string'
,请尝试:
var color = boolean == 'Y' ? 'blue' : 'red';
但是,如果更合乎逻辑地typeof boolean === 'boolean'
,请尝试:
var color = boolean ? 'blue' : 'red';