implement TextSymbolizer->PointPlacement
This commit is contained in:
Binary file not shown.
@@ -220,6 +220,64 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"LabelPlacement": function(node, symbolizer) {
|
||||||
|
this.readChildNodes(node, symbolizer);
|
||||||
|
},
|
||||||
|
"PointPlacement": function(node, symbolizer) {
|
||||||
|
this.readChildNodes(node, symbolizer);
|
||||||
|
var labelAlign,
|
||||||
|
x = symbolizer.labelAnchorPointX,
|
||||||
|
y = symbolizer.labelAnchorPointY;
|
||||||
|
if (x <= 1/3) {
|
||||||
|
labelAlign = 'l';
|
||||||
|
} else if (x > 1/3 && x < 2/3) {
|
||||||
|
labelAlign = 'c';
|
||||||
|
} else if (x >= 2/3) {
|
||||||
|
labelAlign = 'r';
|
||||||
|
}
|
||||||
|
if (y <= 1/3) {
|
||||||
|
labelAlign += 'b';
|
||||||
|
} else if (y > 1/3 && y < 2/3) {
|
||||||
|
labelAlign += 'm';
|
||||||
|
} else if (x >= 2/3) {
|
||||||
|
labelAlign += 't';
|
||||||
|
}
|
||||||
|
symbolizer.labelAlign = labelAlign;
|
||||||
|
},
|
||||||
|
"AnchorPoint": function(node, symbolizer) {
|
||||||
|
this.readChildNodes(node, symbolizer);
|
||||||
|
},
|
||||||
|
"AnchorPointX": function(node, symbolizer) {
|
||||||
|
var labelAnchorPointX = this.readers.ogc._expression.call(this, node);
|
||||||
|
// always string, could be empty string
|
||||||
|
if(labelAnchorPointX) {
|
||||||
|
symbolizer.labelAnchorPointX = labelAnchorPointX;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AnchorPointY": function(node, symbolizer) {
|
||||||
|
var labelAnchorPointY = this.readers.ogc._expression.call(this, node);
|
||||||
|
// always string, could be empty string
|
||||||
|
if(labelAnchorPointY) {
|
||||||
|
symbolizer.labelAnchorPointY = labelAnchorPointY;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Displacement": function(node, symbolizer) {
|
||||||
|
this.readChildNodes(node, symbolizer);
|
||||||
|
},
|
||||||
|
"DisplacementX": function(node, symbolizer) {
|
||||||
|
var labelXOffset = this.readers.ogc._expression.call(this, node);
|
||||||
|
// always string, could be empty string
|
||||||
|
if(labelXOffset) {
|
||||||
|
symbolizer.labelXOffset = labelXOffset;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DisplacementY": function(node, symbolizer) {
|
||||||
|
var labelYOffset = this.readers.ogc._expression.call(this, node);
|
||||||
|
// always string, could be empty string
|
||||||
|
if(labelYOffset) {
|
||||||
|
symbolizer.labelYOffset = labelYOffset;
|
||||||
|
}
|
||||||
|
},
|
||||||
"Label": function(node, symbolizer) {
|
"Label": function(node, symbolizer) {
|
||||||
var value = this.readers.ogc._expression.call(this, node);
|
var value = this.readers.ogc._expression.call(this, node);
|
||||||
if (value) {
|
if (value) {
|
||||||
@@ -881,6 +939,11 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
|
|||||||
symbolizer.fontStyle != null) {
|
symbolizer.fontStyle != null) {
|
||||||
this.writeNode("Font", symbolizer, node);
|
this.writeNode("Font", symbolizer, node);
|
||||||
}
|
}
|
||||||
|
// add in optional LabelPlacement
|
||||||
|
if (symbolizer.labelAnchorPointX != null ||
|
||||||
|
symbolizer.labelAnchorPointY != null) {
|
||||||
|
this.writeNode("LabelPlacement", symbolizer, node);
|
||||||
|
}
|
||||||
// add in optional Halo
|
// add in optional Halo
|
||||||
if(symbolizer.haloRadius != null ||
|
if(symbolizer.haloRadius != null ||
|
||||||
symbolizer.haloColor != null ||
|
symbolizer.haloColor != null ||
|
||||||
@@ -894,6 +957,69 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
|
|||||||
}
|
}
|
||||||
return node;
|
return node;
|
||||||
},
|
},
|
||||||
|
"LabelPlacement": function(symbolizer) {
|
||||||
|
var node = this.createElementNSPlus("sld:LabelPlacement");
|
||||||
|
if (symbolizer.labelAnchorPointX != null ||
|
||||||
|
symbolizer.labelAnchorPointY != null) {
|
||||||
|
this.writeNode("PointPlacement", symbolizer, node);
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
},
|
||||||
|
"PointPlacement": function(symbolizer) {
|
||||||
|
var node = this.createElementNSPlus("sld:PointPlacement");
|
||||||
|
if (symbolizer.labelAnchorPointX != null ||
|
||||||
|
symbolizer.labelAnchorPointY != null) {
|
||||||
|
this.writeNode("AnchorPoint", symbolizer, node);
|
||||||
|
}
|
||||||
|
if (symbolizer.labelXOffset != null ||
|
||||||
|
symbolizer.labelYOffset != null) {
|
||||||
|
this.writeNode("Displacement", symbolizer, node);
|
||||||
|
}
|
||||||
|
if (symbolizer.rotation != null) {
|
||||||
|
this.writeNode("Rotation", symbolizer.rotation, node);
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
},
|
||||||
|
"AnchorPoint": function(symbolizer) {
|
||||||
|
var node = this.createElementNSPlus("sld:AnchorPoint");
|
||||||
|
if (symbolizer.labelAnchorPointX != null) {
|
||||||
|
this.writeNode("AnchorPointX", symbolizer.labelAnchorPointX, node);
|
||||||
|
}
|
||||||
|
if (symbolizer.labelAnchorPointY != null) {
|
||||||
|
this.writeNode("AnchorPointY", symbolizer.labelAnchorPointY, node);
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
},
|
||||||
|
"AnchorPointX": function(value) {
|
||||||
|
return this.createElementNSPlus("sld:AnchorPointX", {
|
||||||
|
value: value
|
||||||
|
});
|
||||||
|
},
|
||||||
|
"AnchorPointY": function(value) {
|
||||||
|
return this.createElementNSPlus("sld:AnchorPointY", {
|
||||||
|
value: value
|
||||||
|
});
|
||||||
|
},
|
||||||
|
"Displacement": function(symbolizer) {
|
||||||
|
var node = this.createElementNSPlus("sld:Displacement");
|
||||||
|
if (symbolizer.labelXOffset != null) {
|
||||||
|
this.writeNode("DisplacementX", symbolizer.labelXOffset, node);
|
||||||
|
}
|
||||||
|
if (symbolizer.labelYOffset != null) {
|
||||||
|
this.writeNode("DisplacementY", symbolizer.labelYOffset, node);
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
},
|
||||||
|
"DisplacementX": function(value) {
|
||||||
|
return this.createElementNSPlus("sld:DisplacementX", {
|
||||||
|
value: value
|
||||||
|
});
|
||||||
|
},
|
||||||
|
"DisplacementY": function(value) {
|
||||||
|
return this.createElementNSPlus("sld:DisplacementY", {
|
||||||
|
value: value
|
||||||
|
});
|
||||||
|
},
|
||||||
"Font": function(symbolizer) {
|
"Font": function(symbolizer) {
|
||||||
var node = this.createElementNSPlus("sld:Font");
|
var node = this.createElementNSPlus("sld:Font");
|
||||||
// add in CssParameters
|
// add in CssParameters
|
||||||
|
|||||||
@@ -47,6 +47,19 @@
|
|||||||
'<CssParameter name="font-weight">bold</CssParameter>' +
|
'<CssParameter name="font-weight">bold</CssParameter>' +
|
||||||
'<CssParameter name="font-style">normal</CssParameter>' +
|
'<CssParameter name="font-style">normal</CssParameter>' +
|
||||||
'</Font>' +
|
'</Font>' +
|
||||||
|
'<LabelPlacement>' +
|
||||||
|
'<PointPlacement>' +
|
||||||
|
'<AnchorPoint>' +
|
||||||
|
'<AnchorPointX>0.5</AnchorPointX>' +
|
||||||
|
'<AnchorPointY>0.5</AnchorPointY>' +
|
||||||
|
'</AnchorPoint>' +
|
||||||
|
'<Displacement>' +
|
||||||
|
'<DisplacementX>5</DisplacementX>' +
|
||||||
|
'<DisplacementY>5</DisplacementY>' +
|
||||||
|
'</Displacement>' +
|
||||||
|
'<Rotation>45</Rotation>' +
|
||||||
|
'</PointPlacement>' +
|
||||||
|
'</LabelPlacement>' +
|
||||||
'<Halo>' +
|
'<Halo>' +
|
||||||
'<Radius>3</Radius>' +
|
'<Radius>3</Radius>' +
|
||||||
'<Fill>' +
|
'<Fill>' +
|
||||||
|
|||||||
Reference in New Issue
Block a user