Ok, I am now trying to take a very methodical approach to this now. I've created a test dataset:
insert TwnTest (town, geom) values ('L0', geometry::STGeomFromText('POINT (0 0)', 4326))
insert TwnTest (town, geom) values ('LR', geometry::STGeomFromText('POINT (-0.12565612792968881 10)', 4326))
insert TwnTest (town, geom) values ('L1', geometry::STGeomFromText('POINT (-1 20)', 4326))
insert TwnTest (town, geom) values ('L2', geometry::STGeomFromText('POINT (-2 30)', 4326))
insert TwnTest (town, geom) values ('L3', geometry::STGeomFromText('POINT (-3 40)', 4326))
insert TwnTest (town, geom) values ('L4', geometry::STGeomFromText('POINT (-4 50)', 4326))
insert TwnTest (town, geom) values ('L5', geometry::STGeomFromText('POINT (-5 60)', 4326))
insert TwnTest (town, geom) values ('L6', geometry::STGeomFromText('POINT (-6 70)', 4326))
insert TwnTest (town, geom) values ('L7', geometry::STGeomFromText('POINT (-7 80)', 4326))
At zoom level 1 it looks like this, all the labels display:
http://www.norman.cx/photos/links/zoom1.png
At zoom level 2 it looks like this, again all labels showing, several straddling the tile edge:
http://www.norman.cx/photos/links/zoom1.png
At zoom level 3 it starts to go wrong, every label within 4 degrees of the tile edge is not drawn:
http://www.norman.cx/photos/links/zoom1.png
Is what you can see here just normal tile edge issues or is something else going wrong ? From the descriptions of meta tiling I've seen here, I expect it to deal with and draw these labels correctly.
I also notice that the label at 0,0 is drawn up to level 3 and then never drawn in any zoom levels beyond that. I also note that 4x4 meta tiles appear to be the default and that there are 4x4 tiles at level 3.
I suspect therefore that meta tiles aren't sliding, but are in fact a fixed grid. That would mean that beyond level 3 a point at lat/long 0,0 will always be on the edge of a meta tile and the label will therefore never be drawn. Does that make sense ?
I guess I next have to work out why my metatiling and gutter settings for GWC aren't using used. I've set the meta tile to 5x5 and set the gutter to 128, but it doesn't appear to actually be being used (as 16 tiles get cached at a time, suggesting a 4x4 meta tile is being used).
I'm using the following SLD:
<?xml version="1.0" encoding="iso-8859-1"?>
<StyledLayerDescriptor version="1.0.0" 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"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
<NamedLayer>
<Name>London test</Name>
<UserStyle>
<Title>London test</Title>
<Abstract>London test</Abstract>
<FeatureTypeStyle>
<Rule>
<Title>Red square</Title>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>square</WellKnownName>
<Fill>
<CssParameter name="fill">#FF0000</CssParameter>
</Fill>
</Mark>
<Size>5</Size>
</Graphic>
</PointSymbolizer>
<TextSymbolizer>
<Label>
<ogc:PropertyName>town</ogc:PropertyName>
</Label>
<LabelPlacement>
<PointPlacement>
<AnchorPoint>
<AnchorPointX>0.0</AnchorPointX>
<AnchorPointY>0.5</AnchorPointY>
</AnchorPoint>
<Displacement>
<DisplacementX>5</DisplacementX>
<DisplacementY>-3</DisplacementY>
</Displacement>
</PointPlacement>
</LabelPlacement>
<Fill>
<CssParameter name="fill">#000000</CssParameter>
</Fill>
</TextSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>