Я пытаюсь добавить один из включенных наборов данных с GeoServer на карту OpenLayers. Я следовал учебным пособиям по OpenGeo, видел подобную ветку здесь, но, похоже, не могу ее взломать. Может кто-нибудь взглянуть на мой код и настройку GeoServer и сказать, где я ошибаюсь?
Вот мой код:
//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();
Подробности GeoServer: имя рабочего пространства = medford, URI пространства имен = http://medford.opengeo.org Для типа объекта, который я пробовал, «парки» и «медфорд: парки»
Слой включен, объявлен и имеет предел возврата 30 объектов.
Я изо всех сил пытаюсь собрать простую карту.
Обновленное решение. Работает в настоящее время.
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
})
Не нужно указывать имя геометрии в определении слоя. Так как Native SRS был нулевым в нашем наборе данных, если мы сохраним geometryName, чем он принимает значение по умолчанию, но без него он использует проекцию карты (в нашем случае 27700).
источник
workspace
(это приведет вас к страницеEdit Workspace
.Name
Это то, что вы положили какfeaturePrefix
. ИNamespace URI
это то, что вы положили какfeatureNS
. Кроме того, не уверен, еслиfile:///c:
местоположение потребует от вас использовать прокси. Но я бы сделал файл в прямом эфире,http://localhost
чтобы проверить и убедиться.<wfs:FeatureCollection numberOfFeatures="30"...
элемент, верно?Первое, что нужно проверить: находится ли ваш сервер / тестовая веб-страница на medford.opengeo.org? Если это не так, вы не сможете получить доступ к WFS из-за единой политики происхождения . Технически вы можете использовать прокси, чтобы это исправить. (хотя, на мой взгляд, это всего лишь случай, когда WFS является плохо разработанным протоколом)
источник
Ваша проблема в том, что у вас есть префикс в имени функции и пространстве имен, это сбивает с толку GeoServer (и / или OpenLayers).
Пытаться:
У меня есть несколько примеров WFS на http://ian01.geog.psu.edu/geoserver/www/wfs/index.html с закомментированным исходным кодом, который вы можете изучить.
источник
просто исправьте ваш тип функции от "медфорд: парки" до "парки"
См. Jsfiddle как пример: http://jsfiddle.net/expedio/ucrtthya/
источник
Ваш код в порядке. Вам просто нужно изменить адрес браузера вашей страницы. Направьте страницу браузера через "localhost: 8080 / geoserver / www / your_file_name.html" вместо "file: \ c ......"
Тогда векторный слой будет рендериться отлично.
источник