小叶圆圈颜色取决于变量

时间:2015-05-21 07:21:34

标签: javascript leaflet

我希望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);

任何人都知道如何解决这个问题?

2 个答案:

答案 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';