Label mittig einer LineString positionieren

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

Hi, ich hatte auch mal Probleme mit der Positionierung der Labels und löste es dann server-seitig, in dem ich einen eigenen Vektorlayer nur für die Beschriftungen habe generieren lassen :confused:

Server-seitig wäre keine Lösung für mich. Eigentlich gibt es keinen direkten Server. Das JS läuft in einer Java Applikation.Aber ein Layer für die Labels erstellen wäre eine möglichkeit, jedoch ist sie mit mehr Arbeit verbunden.

Die Position wird bei mir richtig errechnet. zeigt den Label auch mittig an. Halt nur bei einem Zoom wird der Style nicht mehr neu geladen.