J'essaie d'ajouter l'un des ensembles de données inclus avec GeoServer à une carte OpenLayers. J'ai suivi les tutoriels OpenGeo, vu un fil similaire ici, mais je n'arrive pas à le casser. Quelqu'un peut-il jeter un coup d'œil à mon code et à la configuration de GeoServer et me dire où je me trompe?
Voici mon code:
//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();
Détails du GeoServer: workspace name = medford, Namespace URI = http://medford.opengeo.org Pour le type d' entité, j'ai essayé "parks" et "medford: parks"
La couche est activée, publiée et a une limite de retour de 30 fonctionnalités.
J'ai du mal à assembler une carte simple.
Solution mise à jour. Travaille maintenant.
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'a pas besoin de spécifier le nom de la géométrie dans la définition de la couche. Étant donné que Native SRS était nul dans notre jeu de données, si nous conservons geometryName par rapport à celui par défaut, mais sans lui, il utilise la projection cartographique (27700- dans notre cas).
la source
workspace
(cela vous amènera à la pageEdit Workspace
.Name
C'est ce qui est misfeaturePrefix
. EtNamespace URI
c'est ce que vous mettez commefeatureNS
. De plus, je ne sais pas si l'file:///c:
emplacement vous obligera à utiliser un proxy. Mais je ferais le fichier en direct surhttp://localhost
pour tester et vous assurer.<wfs:FeatureCollection numberOfFeatures="30"...
élément parent , non?Première chose à vérifier: votre serveur / page Web de test est-il sur 'medford.opengeo.org'? Si ce n'est pas le cas, vous ne pourrez pas accéder à WFS en raison de la même politique d'origine . Vous pouvez techniquement utiliser un proxy pour résoudre ce problème. (même si à mon avis, c'est juste un cas où WFS est un protocole mal conçu)
la source
Votre problème est que vous avez le préfixe sur le nom de la fonctionnalité et un espace de noms, ce qui prête à confusion GeoServer (et / ou OpenLayers).
Essayer:
J'ai quelques exemples WFS sur http://ian01.geog.psu.edu/geoserver/www/wfs/index.html avec du code source commenté que vous pouvez étudier.
la source
corrigez simplement votre type de caractère de "medford: parks" à "parks"
Voir jsfiddle comme exemple: http://jsfiddle.net/expedio/ucrtthya/
la source
Votre code est ok. Il vous suffit de modifier l'adresse du navigateur de votre page. Pointez la page de votre navigateur via "localhost: 8080 / geoserver / www / your_file_name.html" au lieu de "file: \ c ......"
Ensuite, le calque vectoriel sera rendu parfaitement.
la source