x

Label mittig einer LineString positionieren


Geschrieben von Lamce (Gast) am 19. Mai 2013 15:08:57: [flux]

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


Antworten: