0

我需要为 Vector 层上的元素添加自定义标签,但是在每个代码示例中,我只看到使用 {$param} 语法直接传递的参数,例如:

    var myStyle = new OpenLayers.StyleMap({
        default:{
            pointRadius: 40,
            externalGraphic:'img/pin.png',
            label: "{$param}"
        }
    });

我需要的是制作一种像这样的数据渲染器:

    var myStyle = new OpenLayers.StyleMap({
        default:{
            pointRadius: 40,
            externalGraphic:'img/pin.png',
            label: function(){
                if (param === 1){
                    return "one";
                } else {
                    return "not one";
                }
            }()
        }
    });

所以问题是 - 在这种情况下如何将参数值转换为变量来处理它?

4

1 回答 1

0

您正在寻找的是允许绑定函数而不是模板参数的上下文:

var myContext = {
  getLabel: function(feature) {                    
    return feature.attributes.label;
  }
};
var template = {
  label: "${getLabel}"
};
var style = new OpenLayers.Style(template, {
  context : myContext
});

以下是一些资源:

于 2013-07-19T11:46:40.600 回答