Estou tentando adicionar um dos conjuntos de dados incluídos com o GeoServer a um mapa do OpenLayers. Eu segui os tutoriais do OpenGeo, vi tópicos semelhantes aqui, mas não consigo decifrá-lo. Alguém pode dar uma olhada no meu código e na configuração do GeoServer e me dizer onde estou errado?
Aqui está o meu código:
//WMS map
world = new OpenLayers.Layer.WMS("Global Imagery", "http://maps.opengeo.org/geowebcache/service/wms", {
layers : "openstreetmap",
format : "image/png"
});
map.addLayer(world);
//WFS
parks = new OpenLayers.Layer.Vector("WFS", {
strategies : [new OpenLayers.Strategy.BBOX()],
protocol : new OpenLayers.Protocol.WFS({
url : "http://localhost:8081/geoserver/wfs",
featureType : "medford:parks",
featureNS : "http://medford.opengeo.org/medford"
})
});
map.addLayer(parks);
map.zoomToMaxExtent();
Detalhes do GeoServer: nome da área de trabalho = medford, URI do namespace = http://medford.opengeo.org Para o tipo de recurso, tentei "parques" e "medford: parques"
A camada está ativada, anunciada e tem um limite de retorno de 30 recursos.
Estou lutando para montar um mapa simples.
Solução atualizada. Trabalhando agora.
wfs = new OpenLayers.Layer.Vector("Fields_WFS", {
strategies : [new OpenLayers.Strategy.Fixed()],
protocol : new OpenLayers.Protocol.WFS({
version : "1.1.0",
url : GEOSERVER_HOST + ":" + GEOSERVER_PORT + "/geoserver/wfs",
featurePrefix : "rpid",
featureType : "FIELDS_SUBSET_BNG_OSGB36_1",
featureNS : "<namespace>",
//geometryName : "GEOM", type "Geometry"
srsName : "EPSG:27700"
}),
renderers : renderer
})
Não precisa especificar o nome da geometria na definição de Camada. Como o SRS nativo era nulo em nosso conjunto de dados, se mantivermos geometryName do que o padrão, mas sem ele, ele usará a projeção de mapa (27700- no nosso caso).
fonte
workspace
(isso o levará à páginaEdit Workspace
. OName
é o que você coloca comofeaturePrefix
. E oNamespace URI
que você coloca comofeatureNS
. Além disso, não tenho certeza se ofile:///c:
local exigirá que você use um proxy. o arquivo vivo nohttp://localhost
para testar e certificar-se.<wfs:FeatureCollection numberOfFeatures="30"...
elemento pai , certo?Primeira coisa a verificar: a sua página de servidor / teste está em 'medford.opengeo.org'? Caso contrário, você não poderá acessar o WFS devido à mesma diretiva de origem . Tecnicamente, você pode usar um proxy para corrigir isso. (embora, na minha opinião, este seja apenas um caso de WFS ser um protocolo mal projetado)
fonte
Seu problema é que você tem o prefixo no nome do recurso e um espaço para nome que confunde o GeoServer (e / ou o OpenLayers).
Experimentar:
Eu tenho alguns exemplos do WFS em http://ian01.geog.psu.edu/geoserver/www/wfs/index.html com o código fonte comentado que você pode estudar.
fonte
basta corrigir o tipo de característica de "medford: parques" para "parques"
Veja jsfiddle como exemplo: http://jsfiddle.net/expedio/ucrtthya/
fonte
Seu código está ok. Você só precisa alterar o endereço do navegador da sua página. Aponte a página do navegador através de "localhost: 8080 / geoserver / www / your_file_name.html" em vez de "file: \ c ......"
Então a camada vetorial será renderizada perfeitamente.
fonte