OpenLayers: Определение свойств объекта по умолчанию
Добавлено: 19 янв 2011, 13:27
Часто приходится создавать множество однотипных объектов с одинаковыми свойствами, например слоёв. В этом случае оказывается удобным передавать в качестве параметра - заранее подготовленный объект с описанными свойствами. Например:
При использовании такого подхода, значительно сокращается количество строк кода и повышается его читаемость. Но что делать, если наряду с одинаковыми свойствами, каждый слой обладает некоторыми уникальными? Предположим, что это будет свойство featureType. В этом случае убираем его из объекта с дефолтными свойствами:
И добавляем нужное(-ые) свойство(-а) в момент создания нового объекта:
Вместо метода OpenLayers.Util.applyDefaults() можно использовать аналог - OpenLayers.Util.extend().
Код: Выделить всё
//Описание объекта с параметрами
var defaultWFSProperty = {
url: "http://gis-lab.info/wfs.cgi?",
featureNS: "http://gis-lab.info",
featureType: "border",
geometryName: "wkb_geometry",
outputFormat: "application/json" ,
readFormat: new OpenLayers.Format.GeoJSON()
};
//Создание слоя
var border = new OpenLayers.Layer.Vector("Границы", {
strategies: [new OpenLayers.Strategy.BBOX()],
protocol: new OpenLayers.Protocol.WFS(defaultWFSProperty)
});
Код: Выделить всё
//Описание объекта с параметрами
var defaultWFSProperty = {
url: "http://gis-lab.info/wfs.cgi?",
featureNS: "http://gis-lab.info",
//featureType: "border",
geometryName: "wkb_geometry",
outputFormat: "application/json" ,
readFormat: new OpenLayers.Format.GeoJSON()
};
Код: Выделить всё
var border = new OpenLayers.Layer.Vector("Границы", {
strategies: [new OpenLayers.Strategy.BBOX()],
protocol: new OpenLayers.Protocol.WFS(
OpenLayers.Util.applyDefaults({featureType: "border"},defaultWFSProperty)
)}
);