merge with trunk
This commit is contained in:
@@ -46,7 +46,7 @@
|
||||
new OpenLayers.Feature.Vector(point2, {name: 'foo', description: 'bar'})
|
||||
];
|
||||
var data = parser.write(features);
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><wpt lon="-111.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt><wpt lon="-112.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt></gpx>', 'GPX serializes points correctly');
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="OpenLayers" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><wpt lon="-111.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt><wpt lon="-112.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt></gpx>', 'GPX serializes points correctly');
|
||||
}
|
||||
function test_Format_GPX_serialize_line(t) {
|
||||
t.plan(1);
|
||||
@@ -58,7 +58,7 @@
|
||||
var line = new OpenLayers.Geometry.LineString([point, point2]);
|
||||
var f = new OpenLayers.Feature.Vector(line, {name: 'foo', description: 'bar'});
|
||||
var data = parser.write(f);
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes line correctly');
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="OpenLayers" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes line correctly');
|
||||
}
|
||||
function test_Format_GPX_serialize_lines(t) {
|
||||
t.plan(1);
|
||||
@@ -74,7 +74,7 @@
|
||||
var f = new OpenLayers.Feature.Vector(line, {name: 'foo', description: 'bar'});
|
||||
var f2 = new OpenLayers.Feature.Vector(line2, {name: 'dude', description: 'truite'});
|
||||
var data = parser.write([f, f2]);
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk><trk><name>dude</name><desc>truite</desc><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes lines correctly');
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="OpenLayers" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk><trk><name>dude</name><desc>truite</desc><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes lines correctly');
|
||||
}
|
||||
function test_Format_GPX_serialize_multiline(t) {
|
||||
t.plan(1);
|
||||
@@ -90,7 +90,7 @@
|
||||
var multiline = new OpenLayers.Geometry.MultiLineString([line, line2]);
|
||||
var f = new OpenLayers.Feature.Vector(multiline, {name: 'foo', description: 'bar'});
|
||||
var data = parser.write([f]);
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes multiline correctly');
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="OpenLayers" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes multiline correctly');
|
||||
}
|
||||
function test_Format_GPX_serialize_polygon(t) {
|
||||
t.plan(1);
|
||||
@@ -103,7 +103,7 @@
|
||||
var polygon = new OpenLayers.Geometry.Polygon([linearRing]);
|
||||
var f = new OpenLayers.Feature.Vector(polygon, {name: 'foo', description: 'bar'});
|
||||
var data = parser.write([f]);
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/><trkpt lon="-111.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes polygon correctly');
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="OpenLayers" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/><trkpt lon="-111.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes polygon correctly');
|
||||
}
|
||||
function test_Format_GPX_serialize_metadata(t) {
|
||||
t.plan(1);
|
||||
@@ -111,7 +111,7 @@
|
||||
var parser = new OpenLayers.Format.GPX();
|
||||
|
||||
var data = parser.write([], {name: 'foo', desc: 'bar'});
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><metadata><name>foo</name><desc>bar</desc></metadata></gpx>', 'GPX serializes metadata correctly');
|
||||
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="OpenLayers" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><metadata><name>foo</name><desc>bar</desc></metadata></gpx>', 'GPX serializes metadata correctly');
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
@@ -47,6 +47,19 @@
|
||||
'<CssParameter name="font-weight">bold</CssParameter>' +
|
||||
'<CssParameter name="font-style">normal</CssParameter>' +
|
||||
'</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>' +
|
||||
'<Radius>3</Radius>' +
|
||||
'<Fill>' +
|
||||
@@ -177,7 +190,7 @@
|
||||
t.eq(text.label, "A ${FOO} label", "(AAA161) first rule has proper text label");
|
||||
t.eq(layer.userStyles[0].propertyStyles["label"], true, "label added to propertyStyles");
|
||||
t.eq(text.fontFamily, "Arial", "(AAA161) first rule has proper font family");
|
||||
t.eq(text.fillColor, "#000000", "(AAA161) first rule has proper text fill");
|
||||
t.eq(text.fontColor, "#000000", "(AAA161) first rule has proper text fill");
|
||||
t.eq(text.haloRadius, "3", "(AAA161) first rule has proper halo radius");
|
||||
t.eq(text.haloColor, "#ffffff", "(AAA161) first rule has proper halo color");
|
||||
|
||||
@@ -347,7 +360,7 @@
|
||||
"label": "This is the ${city} in ${state}.",
|
||||
"fontFamily": "Arial",
|
||||
"fontSize": 10,
|
||||
"fillColor": "blue",
|
||||
"fontColor": "blue",
|
||||
"fontWeight": "bold",
|
||||
"fontStyle": "normal",
|
||||
"haloRadius": 2,
|
||||
@@ -509,7 +522,55 @@
|
||||
t.xml_eq(got, exp, "duplicated rules to write zIndex as FeatureTypeStyle elements");
|
||||
|
||||
}
|
||||
|
||||
|
||||
function test_label_LinePlacement(t) {
|
||||
t.plan(1);
|
||||
var format = new OpenLayers.Format.SLD.v1_0_0({
|
||||
multipleSymbolizers: true
|
||||
});
|
||||
var style = new OpenLayers.Style2({
|
||||
rules: [
|
||||
new OpenLayers.Rule({
|
||||
symbolizers: [
|
||||
new OpenLayers.Symbolizer.Line({
|
||||
strokeColor: "red",
|
||||
strokeWidth: 3
|
||||
}),
|
||||
new OpenLayers.Symbolizer.Text({
|
||||
label: "${FOO}",
|
||||
labelPerpendicularOffset: 10
|
||||
})
|
||||
]
|
||||
})
|
||||
]
|
||||
});
|
||||
var got = format.writeNode("sld:UserStyle", style);
|
||||
var exp = readXML("label_lineplacement_test.sld").documentElement;
|
||||
t.xml_eq(got, exp, "LinePlacement written out correctly");
|
||||
}
|
||||
|
||||
function test_labelAlignToAnchorPosition(t) {
|
||||
t.plan(1);
|
||||
var format = new OpenLayers.Format.SLD.v1_0_0({
|
||||
multipleSymbolizers: true
|
||||
});
|
||||
var style = new OpenLayers.Style2({
|
||||
rules: [
|
||||
new OpenLayers.Rule({
|
||||
symbolizers: [
|
||||
new OpenLayers.Symbolizer.Text({
|
||||
label: "${FOO}",
|
||||
labelAlign: "rb"
|
||||
})
|
||||
]
|
||||
})
|
||||
]
|
||||
});
|
||||
var got = format.writeNode("sld:UserStyle", style);
|
||||
var exp = readXML("label_pointplacement_test.sld").documentElement;
|
||||
t.xml_eq(got, exp, "PointPlacement with labelAlign written out correctly");
|
||||
}
|
||||
|
||||
function test_read_FeatureTypeStyles(t) {
|
||||
|
||||
t.plan(13);
|
||||
@@ -585,7 +646,6 @@
|
||||
doc = readXML("polygon_labelhalo.sld");
|
||||
out = format.write(format.read(doc));
|
||||
t.xml_eq(out, doc.documentElement, "round-tripped polygon_labelhalo.sld");
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -867,5 +927,46 @@
|
||||
</sld:FeatureTypeStyle>
|
||||
</sld:UserStyle>
|
||||
--></div>
|
||||
<div id="label_lineplacement_test.sld"><!--
|
||||
<sld:UserStyle xmlns:sld="http://www.opengis.net/sld">
|
||||
<sld:FeatureTypeStyle>
|
||||
<sld:Rule>
|
||||
<sld:LineSymbolizer>
|
||||
<sld:Stroke>
|
||||
<sld:CssParameter name="stroke">red</sld:CssParameter>
|
||||
<sld:CssParameter name="stroke-width">3</sld:CssParameter>
|
||||
</sld:Stroke>
|
||||
</sld:LineSymbolizer>
|
||||
<sld:TextSymbolizer>
|
||||
<sld:Label><ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">FOO</ogc:PropertyName></sld:Label>
|
||||
<sld:LabelPlacement>
|
||||
<sld:LinePlacement>
|
||||
<sld:PerpendicularOffset>10</sld:PerpendicularOffset>
|
||||
</sld:LinePlacement>
|
||||
</sld:LabelPlacement>
|
||||
</sld:TextSymbolizer>
|
||||
</sld:Rule>
|
||||
</sld:FeatureTypeStyle>
|
||||
</sld:UserStyle>
|
||||
--></div>
|
||||
<div id="label_pointplacement_test.sld"><!--
|
||||
<sld:UserStyle xmlns:sld="http://www.opengis.net/sld">
|
||||
<sld:FeatureTypeStyle>
|
||||
<sld:Rule>
|
||||
<sld:TextSymbolizer>
|
||||
<sld:Label><ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">FOO</ogc:PropertyName></sld:Label>
|
||||
<sld:LabelPlacement>
|
||||
<sld:PointPlacement>
|
||||
<sld:AnchorPoint>
|
||||
<sld:AnchorPointX>1</sld:AnchorPointX>
|
||||
<sld:AnchorPointY>0</sld:AnchorPointY>
|
||||
</sld:AnchorPoint>
|
||||
</sld:PointPlacement>
|
||||
</sld:LabelPlacement>
|
||||
</sld:TextSymbolizer>
|
||||
</sld:Rule>
|
||||
</sld:FeatureTypeStyle>
|
||||
</sld:UserStyle>
|
||||
--></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="../../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var xml = new OpenLayers.Format.XML();
|
||||
function readXML(id) {
|
||||
return xml.read(document.getElementById(id).firstChild.nodeValue);
|
||||
}
|
||||
|
||||
function test_VendorExtensions(t) {
|
||||
|
||||
var cases = [
|
||||
"poly_label.sld"
|
||||
];
|
||||
var len = cases.length;
|
||||
t.plan(len);
|
||||
|
||||
var format = new OpenLayers.Format.SLD({
|
||||
profile: "GeoServer",
|
||||
multipleSymbolizers: true,
|
||||
namedLayersAsArray: true,
|
||||
schemaLocation: "http://www.opengis.net/sld StyledLayerDescriptor.xsd"
|
||||
});
|
||||
|
||||
var c, doc, data, out;
|
||||
for (var i=0; i<len; ++i) {
|
||||
c = cases[i];
|
||||
doc = readXML(c);
|
||||
data = format.read(doc);
|
||||
out = format.write(data);
|
||||
t.xml_eq(out, doc.documentElement, "round-tripped " + c);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="poly_label.sld"><!--
|
||||
<StyledLayerDescriptor version="1.0.0"
|
||||
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
|
||||
xmlns="http://www.opengis.net/sld"
|
||||
xmlns:ogc="http://www.opengis.net/ogc"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<NamedLayer>
|
||||
<Name>Polygon with styled label</Name>
|
||||
<UserStyle>
|
||||
<Title>SLD Cook Book: Polygon with styled label</Title>
|
||||
<FeatureTypeStyle>
|
||||
<Rule>
|
||||
<PolygonSymbolizer>
|
||||
<Fill>
|
||||
<CssParameter name="fill">#40FF40</CssParameter>
|
||||
</Fill>
|
||||
<Stroke>
|
||||
<CssParameter name="stroke">#FFFFFF</CssParameter>
|
||||
<CssParameter name="stroke-width">2</CssParameter>
|
||||
</Stroke>
|
||||
</PolygonSymbolizer>
|
||||
<TextSymbolizer>
|
||||
<Label>
|
||||
<ogc:PropertyName>name</ogc:PropertyName>
|
||||
</Label>
|
||||
<Font>
|
||||
<CssParameter name="font-family">Arial</CssParameter>
|
||||
<CssParameter name="font-size">11</CssParameter>
|
||||
<CssParameter name="font-weight">bold</CssParameter>
|
||||
<CssParameter name="font-style">normal</CssParameter>
|
||||
</Font>
|
||||
<Fill>
|
||||
<CssParameter name="fill">#000000</CssParameter>
|
||||
<CssParameter name="fill-opacity">0.5</CssParameter>
|
||||
</Fill>
|
||||
<Graphic>
|
||||
<Mark>
|
||||
<WellKnownName>square</WellKnownName>
|
||||
<Fill>
|
||||
<CssParameter name="fill">#59BF34</CssParameter>
|
||||
<CssParameter name="fill-opacity">0.8</CssParameter>
|
||||
</Fill>
|
||||
<Stroke>
|
||||
<CssParameter name="stroke">#2D6917</CssParameter>
|
||||
</Stroke>
|
||||
</Mark>
|
||||
<Size>24</Size>
|
||||
</Graphic>
|
||||
<Priority>
|
||||
<ogc:PropertyName>population</ogc:PropertyName>
|
||||
</Priority>
|
||||
<VendorOption name="autoWrap">60</VendorOption>
|
||||
<VendorOption name="followLine">true</VendorOption>
|
||||
<VendorOption name="repeat">300</VendorOption>
|
||||
<VendorOption name="maxDisplacement">150</VendorOption>
|
||||
<VendorOption name="forceLeftToRight">false</VendorOption>
|
||||
<VendorOption name="graphic-margin">3</VendorOption>
|
||||
<VendorOption name="graphic-resize">stretch</VendorOption>
|
||||
<VendorOption name="group">yes</VendorOption>
|
||||
<VendorOption name="spaceAround">10</VendorOption>
|
||||
<VendorOption name="labelAllGroup">true</VendorOption>
|
||||
<VendorOption name="maxAngleDelta">15</VendorOption>
|
||||
<VendorOption name="conflictResolution">false</VendorOption>
|
||||
<VendorOption name="goodnessOfFit">0.3</VendorOption>
|
||||
<VendorOption name="polygonAlign">mbr</VendorOption>
|
||||
</TextSymbolizer>
|
||||
</Rule>
|
||||
</FeatureTypeStyle>
|
||||
</UserStyle>
|
||||
</NamedLayer>
|
||||
</StyledLayerDescriptor>
|
||||
--></div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user