2013-06-18 2 views
2

По причинам, указанные в How to keep OpenLayers.StyleMap and OpenLayers.SelectFeature from conflicting?, у меня есть некоторый код, стиль, который выглядит как:Как применять контексты Stymbolizer OpenLayers на лету?

myStyle.Events = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); 
myStyle.Events.extendDefault = true; 
myStyle.Events.maxScaleDenominator = 200000000; 
myStyle.Events.graphicWidth = 36; 
myStyle.Events.graphicHeight = 36; 
myStyle.Events.graphicOpacity = 0.75; 
myStyle.Events.externalGraphic = "/img/icons/${icon}.png"; 
myStyle.Events.label = "${count}"; 
myStyle.Events.labelOutlineWidth = 1; 
myStyle.Events.labelOutlineColor = "#000"; 
myStyle.Events.fontColor = "#000"; 
myStyle.Events.fontOpacity = 8.0; 
myStyle.Events.fontSize = "11px"; 
myStyle.Events.labelYOffset = 3; 

myStyle.Events.context = { 
    icon: function(feature) { 
    var iconMap, 
     iconPath, 
     type = "single"; 

    iconMap = { 
     ... 
    } 

    if(feature.attributes.count) { 
     type = "clustered"; 
    } 

    return iconMap[feature.attributes.name][type]; 
    }, 
    count: function(feature) { 
    var labelText = ""; 

    if(feature.attributes.count) { 
     labelText = feature.attributes.count; 
    } 

    return labelText; 
    } 
}; 

Как правильно применять этот контекст на лета, как это? Я не могу выполнить типичный OpenLayers.Style ({}, {context: context}); синтаксис здесь.

ответ

3

Вы должны применить context свойства к OpenLayers.Style например, так:

var style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style["default"]); 
style.pointRadius = "${radius}"; 
style.fillColor = '${colorFunction}'; 

var defaultStyle = new OpenLayers.Style(style, { 
    context: { 
     colorFunction: function(feature) { 
      return colors[feature.attributes.temp]; 
     } 
    } 
}); 

Я рекомендую вам OpenLayers Cookbook (тема 7 вводя в моду) или посмотреть на исходные примеры кода http://acanimal.github.io/Openlayers-Cookbook/ (глава 7 - Улучшение стиля с использованием StyleMap и замена атрибутов функции)

Cheers.

Смежные вопросы