Próbuję dodać jeden z dołączonych zestawów danych z GeoServer do mapy OpenLayers. Śledziłem samouczki OpenGeo, widziałem tutaj podobny wątek, ale nie mogę go złamać. Czy ktoś może rzucić okiem na mój kod i konfigurację GeoServer i powiedzieć mi, gdzie się mylę?
Oto mój kod:
//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();
Szczegóły GeoServer: nazwa obszaru roboczego = medford, URI przestrzeni nazw = http://medford.opengeo.org Dla typu funkcji wypróbowałem „parki” i „medford: parki”
Warstwa jest włączona, reklamowana i ma limit zwrotu 30 funkcji.
Próbuję stworzyć prostą mapę.
Zaktualizowane rozwiązanie. Teraz pracuje.
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
})
Nie trzeba określać nazwy geometrii w definicji warstwy. Ponieważ Native SRS był pusty w naszym zbiorze danych, jeśli zachowamy GeometryName niż domyślnie, ale bez niego użyje odwzorowania mapy (27700 - w naszym przypadku).
źródło
workspace
(to przeniesie Cię na stronęEdit Workspace
. ToName
jest to, co umieściłeś jakofeaturePrefix
. INamespace URI
to, co umieściłeś jakofeatureNS
. Ponadto, nie jestem pewien, czyfile:///c:
lokalizacja będzie wymagać użycia proxy. Ale zrobiłbym plik na żywo,http://localhost
aby go przetestować i się upewnić<wfs:FeatureCollection numberOfFeatures="30"...
element nadrzędny , prawda?Najpierw sprawdź: czy twoja strona serwera / strony testowej znajduje się na stronie „medford.opengeo.org”? Jeśli tak nie jest, nie będziesz mógł uzyskać dostępu do WFS ze względu na zasady tego samego pochodzenia . Możesz technicznie użyć proxy, aby to naprawić. (choć moim zdaniem jest to tylko przypadek, że WFS jest źle zaprojektowanym protokołem)
źródło
Problem polega na tym, że masz prefiks na nazwie funkcji i przestrzeni nazw, co dezorientuje GeoServer (i / lub OpenLayers).
Próbować:
Mam kilka przykładów WFS na http://ian01.geog.psu.edu/geoserver/www/wfs/index.html z zakomentowanym kodem źródłowym, który możesz studiować.
źródło
po prostu popraw swój typ z „medford: parki” na „parki”
Zobacz jsfiddle jako przykład: http://jsfiddle.net/expedio/ucrtthya/
źródło
Twój kod jest w porządku. Musisz tylko zmienić adres przeglądarki swojej strony. Skieruj stronę przeglądarki do „localhost: 8080 / geoserver / www / your_file_name.html” zamiast „file: \ c ......”
Następnie warstwa wektorowa będzie renderowana idealnie.
źródło