2013-11-23 2 views
0

у меня есть этот скрипт работает:GeoJSON слой из GeoServer не показывает (openlayer)

var map; 

    var map = new ol.Map({ 
    target: 'map', 
    renderer: ol.RendererHint.CANVAS, 
    view: new ol.View2D({ 
    center: ol.proj.transform([16.37, 48.21], 'EPSG:4326', 'EPSG:3857'), 
    zoom: 11 
    }), 
    layers: [ 
    new ol.layer.Tile({ 
     source: new ol.source.MapQuestOpenAerial() 
    }), 
    new ol.layer.Vector({ 
     source: new ol.source.Vector({ 
     url: 'http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=json', 
     parser: new ol.parser.GeoJSON() 
     }) 
    }) 
    ] 
}); 

почему слой не отображается. im иногда получает ошибку «Недостаточно пространства пергенов» от geoserver? это связано с этой проблемой? или мне нужно внести какие-либо корректировки в геосервер для публикации карт? если вы вводите только URL-адрес в браузере, вы получаете код geojson. Большое спасибо заранее

ответ

0

просто указать, что файл GeoJSON не имеет никаких проблем, но есть две точки, одна возле Будапешта, а другой рядом с Йеменом (я использовал http://geojsonlint.com/ для этого)

enter image description here

было бы проблемой?

+0

thx. Это не должно быть проблемой. Я просто удалил записи из базы данных. Я думаю, что это что-то с геосервером .. – user2975100

0

Если вы используете Openlayers, вы можете попробовать использовать слой Openlayers GeoRSS вместо векторного слоя. Есть много вещей, которые могут понадобиться настроить внутри openlayers при использовании векторных слоев для получения данных.

Попробуйте что-то вроде:

new OpenLayers.Layer.GeoRSS('GeoRSS Layer', 'http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=json'); 

Если ехать по ссылке показывает код GeooRSS то очень ubnlikely, что проблема с GeoServer и вместо того, чтобы с тем, как OpenLayers пытается справиться с данными.

Если вы действительно хотите использовать вектор, попробуйте использовать эти параметры, чтобы позволить Openlayers знать, как обрабатывать данные. Что особенно важно, это стратегия, так как это позволяет OpenLayers знать, когда идти и получить данные ЭСТА и формат, как это позволяет ему знать, какой формат данные в.

new OpenLayers.Layer.Vector("GeoRSS Layer", { 
    strategies: [new OpenLayers.Strategy.Fixed()], 
    protocol: new OpenLayers.Protocol.HTTP({ 
     url: "http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=jsonl", 
     format: new OpenLayers.Format.GeoRSS() 
    }) 
}); 

Последнее, что нужно проверить, что ваш карта и ваши данные используют одну и ту же проекцию. Линия:

ol.proj.transform([16.37, 48.21], 'EPSG:4326', 'EPSG:3857'), 

Предлагает, чтобы вы ожидали, что ваша карта будет в EPSG: 3857. Я не вижу, что вы указали карту на эту проекцию в любом месте. Поскольку вы используете слой MapQuestOpenAriel I, это верно, что это правильная проекция. Это не может быть проблемой, если все ваши данные находятся в одном проекте. Однако вы захотите убедиться, что ваши данные о георах находятся в этой проекции. Глядя на данные, поступающие через ваш канал GeoRSS, он находится в EPSG: 4326. Это означает, что он не будет правильно проецироваться над вашей картой. Это означает, что вам нужно будет перепрограммировать координаты данных GeoRSS. Мы можем сделать это, указав проекцию в слое OpenLayers GeoRSS:.

new OpenLayers.Layer.GeoRSS('GeoRSS Layer', 
           'http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=json', 
           {projection: new OpenLayers.Projection("EPSG:4326")} 
); 

Я не смог найти какую-либо документацию на «парсер» переменный для OpenLayers Это может означать, что вы используете другую библиотеку или Если это так, то, что я сказал выше, может не помочь.

Смежные вопросы