javascript - 传单圆圈颜色取决于变量

标签 javascript 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);

有人知道如何解决这个问题吗?

最佳答案

您的 if 语句不是有效的 JavaScript。您可以将其写为三元运算:

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 对于字符串变量来说也是一个奇怪的名字。如果它实际上是一个 bool 值,您可以将操作编写为:

var color = (boolean) ? "blue" : "red";

更新:

如果您有更多可能的颜色值,三元运算就没那么有用了。那么 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;
}

当没有其他大小写与 boolean 匹配时,将使用 default 大小写。

关于javascript - 传单圆圈颜色取决于变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367076/

相关文章:

javascript - 一个对象什么时候被完全定义?

javascript - React leaflet map 库中的GeoJSON样式

javascript - 如何使用 MarkerCluster 和传单更新弹出内容

javascript - 使用传单将边界图层添加到离线 map

r - Shiny 传单 - 突出显示多边形

javascript - Gulpfile.js 请求

javascript - 将 html id 的输出返回到 php 字符串

javascript - 将状态从 ajax 从一个组件传递到另一个组件

javascript - 如何在 svg 和 d3.js 中指向线的交点?

javascript - 如何合并相邻的多边形