Guten Tag,
Ich möchte gerne eine Linie mit einem Label beschriften und muss dazu den richtigen Offset berechnen, dazu nutze ich ein Stylemap.
Das Problem ist beim Zoomen werden die Offsets nicht neu errechnet. Wenn man einen Reload des kompletten Layer erzwingt werden die Offsets natürlich neu berechnet, jedoch verliere ich damit die Highlights wenn ein Feature selektiert ist.
styleMap = new OpenLayers.StyleMap({
"default": new OpenLayers.Style({
label: "${label}",
fill: true,
fillColor: '#FF0000',
fillOpacity: 0.5,
strokeWidth: 4,
strokeColor: 'white',
pointRadius: 15,
labelXOffset: '${getLableOffsetX}',
labelYOffset: '${getLableOffsetY}',
labelAlign: 'cm'
}, {
context: {
getLableOffsetX: function (f){
xy=labelDeltaPixels(f);
return xy.x/2;
},
getLableOffsetY: function (f){
xy=labelDeltaPixels(f);
return xy.y/2;
},
label: function (feature) {
var arr = feature.attributes.ExtendedData.split(',');
var type = arr[0];
if(type=="REL"){
return feature.attributes.name;
}else{
return "";
}
}
}
}),
"select": {
pointRadius: 20,
fillColor: "#57FFD8",
fillOpacity: 0.8,
strokeColor: "#0000a1",
strokeWidth: 4,
strokeOpacity: 0.8
}
});
Freue mich auf jede Antwort!
mfg
Lamce