Geoserver 2.10 Openlayers 3 TextSymbolizer 标签未显示
Geoserver 2.10 Openlayers 3 TextSymbolizer label not showing up
我是地理服务器和 sld 的新手。我的 OSM 基础层之上有 2 层。一个用于创建热图,一个仅用于标签。我的热图和基础层渲染良好,但标签文本未显示在 openlayers 中。当我在地理服务器中预览它时,它显示正常,但当我尝试在 javascript 中渲染它时,它只在缩小时显示。我似乎无法在网上找到有关此问题的任何信息。
这是 SLD:
<FeatureTypeStyle>
<Rule>
<Name>AQI text</Name>
<Title>AQI Text</Title>
<Abstract>AQI information</Abstract>
<TextSymbolizer>
<label>
<ogc:PropertyName>aqi</ogc:PropertyName>
</label>
</TextSymbolizer>
</Rule>
</FeatureTypeStyle>
这是地理服务器上预览的快照:
这里是 javascript openlayers 代码:
var londonLonLat = [-0.118092, 51.509865];
var londonWebMercator = ol.proj.fromLonLat(londonLonLat);
var layers = [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
new ol.layer.Image({
//extent: [-13884991, 2870341, -7455066, 6338219],
source: new ol.source.ImageWMS({
url: 'http://159.203.81.20:8080/geoserver/wms',
params: {'LAYERS': 'tiger:shapefile'},
serverType: 'geoserver'
})
}),
new ol.layer.Image({
//extent: [-13884991, 2870341, -7455066, 6338219],
source: new ol.source.ImageWMS({
url: 'http://159.203.81.20:8080/geoserver/wms',
params: {'LAYERS': 'test2:test_text_layer'},
serverType: 'geoserver'
})
})
];
var map = new ol.Map({
layers: layers,
target: 'map',
view: new ol.View({
center: londonWebMercator,
zoom: 10
})
});
这是页面的快照:
这是缩小时的快照:
通过更改投影修复了它:
通过向我的数据库添加预定义的边界点(如锚点)解决了类似的问题,然后将这些点作为我的边界框提供给地理服务器:
- 创建 4 个点(例如:北、南、东、西),这将定义一个足够大的框来容纳所有可视化数据。
- 在 geoadmin 中找到您的层
bounding box
并选择从数据计算。
- 在您的
sld
中,您可以定义规则以使这些边界点不可见。
重新计算地理服务器将在任何投影中显示您的数据的边界框。
我是地理服务器和 sld 的新手。我的 OSM 基础层之上有 2 层。一个用于创建热图,一个仅用于标签。我的热图和基础层渲染良好,但标签文本未显示在 openlayers 中。当我在地理服务器中预览它时,它显示正常,但当我尝试在 javascript 中渲染它时,它只在缩小时显示。我似乎无法在网上找到有关此问题的任何信息。
这是 SLD:
<FeatureTypeStyle>
<Rule>
<Name>AQI text</Name>
<Title>AQI Text</Title>
<Abstract>AQI information</Abstract>
<TextSymbolizer>
<label>
<ogc:PropertyName>aqi</ogc:PropertyName>
</label>
</TextSymbolizer>
</Rule>
</FeatureTypeStyle>
这是地理服务器上预览的快照:
这里是 javascript openlayers 代码:
var londonLonLat = [-0.118092, 51.509865];
var londonWebMercator = ol.proj.fromLonLat(londonLonLat);
var layers = [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
new ol.layer.Image({
//extent: [-13884991, 2870341, -7455066, 6338219],
source: new ol.source.ImageWMS({
url: 'http://159.203.81.20:8080/geoserver/wms',
params: {'LAYERS': 'tiger:shapefile'},
serverType: 'geoserver'
})
}),
new ol.layer.Image({
//extent: [-13884991, 2870341, -7455066, 6338219],
source: new ol.source.ImageWMS({
url: 'http://159.203.81.20:8080/geoserver/wms',
params: {'LAYERS': 'test2:test_text_layer'},
serverType: 'geoserver'
})
})
];
var map = new ol.Map({
layers: layers,
target: 'map',
view: new ol.View({
center: londonWebMercator,
zoom: 10
})
});
这是页面的快照:
这是缩小时的快照:
通过更改投影修复了它:
通过向我的数据库添加预定义的边界点(如锚点)解决了类似的问题,然后将这些点作为我的边界框提供给地理服务器:
- 创建 4 个点(例如:北、南、东、西),这将定义一个足够大的框来容纳所有可视化数据。
- 在 geoadmin 中找到您的层
bounding box
并选择从数据计算。 - 在您的
sld
中,您可以定义规则以使这些边界点不可见。
重新计算地理服务器将在任何投影中显示您的数据的边界框。