Приведенный вами пример взят из очень старой бета-версии OpenLayers 3. Вы можете найти примеры из последней версии здесь.
Вы говорите о шейп-файлах, но, учитывая тот факт, что вы использовали OpenLayers.Layer.GML
в OpenLayers 2 и отметили этот пост также geoserver
и gml
, я предполагаю, что вы загрузили свой шейп-файл на GeoServer и используете WFS для доступа к данным.
Таким образом, релевантным примером для рассмотрения будет http://openlayers.org/en/v3.3.0/examples/vector-wfs.html. В этом примере в качестве транспорта используется JSONP. В вашем случае с локальным GeoServer определение вашего векторного источника будет немного проще и может выглядеть так:
var vectorSource = new ol.source.ServerVector({
format: new ol.format.GeoJSON(),
loader: function(extent, resolution, projection) {
var url = 'geoserver/wfs?service=WFS&version=1.1.0&' +
'request=GetFeature&typename=osm:water_areas&outputFormat=json' +
'&srsname=EPSG:3857&bbox=' + extent.join(',') + ',EPSG:3857';
$.ajax(url).then(function(response) {
vectorSource.addFeatures(vectorSource.readFeatures(response));
});
},
strategy: ol.loadingstrategy.createTile(new ol.tilegrid.XYZ({
maxZoom: 19
}))
});
В приведенном выше фрагменте вам нужно будет заменить osm:water_areas
именем вашей рабочей области и слоя (типа объекта).
Чтобы использовать этот источник в векторном слое, вы также можете добавить какой-нибудь стиль, если вам не нужна голубоватая заливка по умолчанию. На приведенном ниже изображении функции отображаются только синим контуром шириной 2 пикселя:
var vector = new ol.layer.Vector({
source: vectorSource,
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'rgba(0, 0, 255, 1.0)',
width: 2
})
})
});
person
ahocevar
schedule
23.03.2015