Перейти к основному содержимому

other-layers

DG.LayerGroup

Используется для группировки нескольких слоев, чтобы обрабатывать их как один. При добавлении группового слоя на карту, все другие слои, добавляемые и удаляемые из группы, также будут добавлены или удалены с карты. Расширяет DG.Layer.

DG.layerGroup([marker1, marker2]).addLayer(polyline).addTo(map);

Создание

КонструкторОписание
DG.layerGroup( <Layer[]> layers ) Создает объект группы, принимает начальный набор слоев для группировки (опционально).

Опции

Опции, унаследованные от Layer

События

События, унаследованные от Layer

Методы

МетодВозвращаетОписание
toGeoJSON()ObjectВозвращает GeoJSON объект, описывающий группу слоев, как GeometryCollection.
addLayer( <Layer> layer ) thisДобавляет указанный слой в группу.
removeLayer( <Layer> layer ) thisУдаляет указанный слой из группы.
removeLayer( <Number> id ) thisУдаляет из группы слой, с указанным ID.
hasLayer( <Layer> layer ) BooleanВозвращает true, если указанный слой уже добавлен в группу.
clearLayers()thisУдаляет все слои из группы.
invoke( <string> methodName, ) thisВызывает метод methodName у каждого слоя из группы. Возможна передача дополнительных параметров. Пропускает слои, у которых не реализован methodName.
eachLayer( <Function> fn, <Object> context? ) thisИтерационно обходит все слои группы. Возможна передача контекстного объекта в функцию итератор. group.eachLayer(function (layer) { layer.bindPopup('Hello'); });
getLayer( <Number> id ) LayerВозвращает слой с указанным ID.
getLayers()Layer[]Возвращает массив всех слоев группы.
setZIndex( <Number> zIndex ) thisВызывает метод setZIndex у каждого слоя из группы, передавая аргумент z-index.
getLayerId( <Layer> layer ) NumberВозвращает ID для указанного слоя.

Методы, унаследованные от Layer

Методы, унаследованные от Evented

DG.FeatureGroup

Расширяет DG.LayerGroup, добавляя обработку событий мыши (получаемых от членов группы) и общий метод bindPopup.

DG.featureGroup([marker1, marker2, polyline])
.bindPopup('Привет, Мир!')
.on('click', function () {
alert('Вы щелкнули по группе!');
})
.addTo(map);

Создание

КонструкторОписание
DG.featureGroup( <Layer[]> layers ) Создает объект группы, принимает начальный набор слоев для группировки (опционально).

Опции

Опции, унаследованные от Layer

События

События, унаследованные от Layer

Методы

МетодВозвращаетОписание
setStyle( <Path options> style ) thisУстанавливает указанные опции векторного объекта для каждого слоя из группы, у которого реализован метод setStyle.
bringToFront()thisПозиционирует слой группы поверх остальных слоев.
bringToBack()thisПозиционирует слой группы под остальными слоями.
getBounds()LatLngBoundsВозвращает прямоугольные границы LatLngBounds объекта Feature Group (для корректной работы метода слои в группе должны возвращать подобную информацию о себе).

Методы, унаследованные от LayerGroup

Методы, унаследованные от Layer

Методы, унаследованные от Evented

DG.GeoJSON

Описывает объект GeoJSON или массив объектов GeoJSON. Позволяет корректно интерпретировать данные GeoJSON и отобразить их на карте. Расширяет DG.FeatureGroup.

DG.geoJson(data, {
style: function (feature) {
return { color: feature.properties.color };
},
})
.bindPopup(function (layer) {
return layer.feature.properties.description;
})
.addTo(map);

Создание

КонструкторОписание
DG.geoJSON( <Object> geojson?, <GeoJSON options> options? ) Создает слой GeoJSON. Опционально принимает объект в формате GeoJSON (возможна передача этого объекта позже, используя метод addData) и объект с опциями.

Опции

ОпцияТипЗначение
>по умолчанию
Описание
pointToLayerFunction *Функция, определяющая, как точки GeoJSON будут создавать слои API карт. API карт вызывает метод, если он реализован, передавая объекты точек GeoJSON и LatLng. По умолчанию, будут создаваться обычные Маркеры: function(geoJsonPoint, latlng) { return DG.marker(latlng); }
styleFunction *Функция, определяющая Path options для стилизации отображения GeoJSON линий и полигонов. API карт вызывает метод, если он реализован, при каждом добавлении данных. По умолчанию, стили никак не изменяются: function (geoJsonFeature) { return {} }
onEachFeatureFunction *Функция, которая будет вызвана после каждого создания и стилизации нового слоя. Удобно использовать для подключения обработчиков событий и попапов. По умолчанию, никаких дополнительных действий не происходит: function (layer) {}
filterFunction *Функция, которая определяет, должен ли отображаться указанный объект или нет. По умолчанию, отображаются все объекты: function (geoJsonFeature) { return true; }
coordsToLatLngFunction *Функция, которая будет использоваться для преобразования координат GeoJSON в координаты LatLngs. По умолчанию будет использован статический метод coordsToLatLng.

Опции, унаследованные от Layer

События

События, унаследованные от Layer

Методы

Методы, унаследованные от FeatureGroup

Методы, унаследованные от LayerGroup

Методы, унаследованные от Layer

Методы, унаследованные от Evented

Статические функции

Есть несколько статических функций, которые можно использовать без создания экземпляров класса DG.GeoJSON:

ФункцияВозвращаетОписание
geometryToLayer( <Object> featureData, <GeoJSON options> options? ) LayerСоздает Слой на основе переданного GeoJSON объекта. Может использовать собственные функции pointToLayer и/или coordsToLatLng, если они переданы в объекте опций.
coordsToLatLng( <Array> coords ) LatLngСоздает объект LatLng из массива двух чисел, переданных в формате (longitude, latitude), или трех чисел, в формате (longitude, latitude, altitude), которые используются в GeoJSON для представления точек.
coordsToLatLngs( <Array> coords, <Number> levelsDeep?, <Function> coordsToLatLng? ) ArrayСоздает многомерный массив объектов LatLng из массива GeoJSON координат. levelsDeep определяет уровень вложенности (0 для массива точек, 1 для массива массивов точек, и т. д., по умолчанию 0). Может использовать собственную функцию coordsToLatLng для преобразования.
latLngToCoords( <LatLng> latlng ) ArrayОбратная операция для coordsToLatLng
latLngsToCoords( <Array> latlngs, <Number> levelsDeep?, <Boolean> closed? ) ArrayОбратная операция для coordsToLatLngs Опция closed определяет, нужно ли добавлять первую точку в конец массива и используется только в случае, если levelsDeep равен 0.
asFeature( <Object> geojson ) ObjectНормализует геометрические примитивы GeoJSON в объекты GeoJSON.

DG.GridLayer

Универсальный класс для обработки тайловой сетки из HTML элементов. Это базовый класс, от которого наследуются все тайловые слои. Поддерживает создание, анимацию и другие действия с элементами, представляющими тайл, такими как <canvas>, <img> или <div>.

Использование в синхронном коде

Для того, чтобы создать собственный слой, нужно произвести наследование от GridLayer и реализовать метод create(), которому будет передан объект Point с x, y и z (уровень увеличения) координатами для отображения тайла.

var CanvasLayer = DG.GridLayer.extend({
createTile: function (coords) {
// создаем элемент <canvas>
var tile = DG.DomUtil.create('canvas', 'leaflet-tile');
// устанавливаем размер тайла
var size = this.getTileSize();
tile.width = size.x;
tile.height = size.y;
// получаем объект контекста и рисуем что-нибудь на нем, используя coords.x, coords.y и coords.z
var ctx = canvas.getContext('2d');
// возвращаем получившийся объект, чтобы его можно было отобразить на экране
return tile;
},
});

Использование в асинхронном коде

Создавать объекты тайлов можно и асинхронно. Когда объект тайла полностью создан, его можно вернуть в API карт, используя функцию обратного вызова done().

var CanvasLayer = DG.GridLayer.extend({
createTile: function (coords, done) {
var error;
// создаем элемент <canvas>
var tile = DG.DomUtil.create('canvas', 'leaflet-tile');
// устанавливаем размер тайла
var size = this.getTileSize();
tile.width = size.x;
tile.height = size.y;
// рисуем что-нибудь и возвращаем итоговый тайл, используя функцию обратного вызова done()
done(error, tile);
},
});

Создание

КонструкторОписание
DG.gridLayer( <GridLayer options> options? ) Создает новый объект GridLayer.

Опции

ОпцияТипЗначение
>по умолчанию
Описание
tileSizeNumber|Point 256Ширина и высота тайлов. Используйте число, если ширина и высота одинаковые, или объект DG.point(ширина, высота) в противном случае.
opacityNumber 1.0Уровень полупрозрачности тайлов. Может использоваться в функции createTile().
updateWhenIdleBoolean dependsЕсли значение false, новые тайлы подгружаются в процессе перемещения карты, в противном случае, только после окончания перемещения карты по экрану (можно использовать для лучшей производительности). true по умолчанию на мобильных устройствах, и false в остальных случаях.
updateIntervalNumber 200Тайлы не будут обновляться чаще, чем раз в updateInterval миллисекунд.
attributionString nullИнформация, которая будет отображаться в строке об авторстве, например "© 2GIS".
zIndexNumber 1zIndex для тайлового слоя.
boundsLatLngBounds undefinedЕсли задан, тайлы будут загружаться только для указанного региона, заданного LatLngBounds.
minZoomNumber 0Минимальный уровень масштабирования, при котором будут загружаться тайлы. По умолчанию - вся карта.
maxZoomNumber undefinedМаксимальный уровень масштабирования, при котором будут загружаться тайлы. По умолчанию не задан.
noWrapBoolean falseБудет ли зацикливаться отображение слоя при малом масштабе. Если параметр true, слой будет отображен только один раз.
paneString 'tilePane'Панель карты, на которую будет добавлен слой.

События

СобытиеДанныеОписание
loadingEventВозникает, когда GridLayer начинает загружать тайлы.
tileunloadTileEventВозникает, когда тайл удаляется с карты (например, при выходе его за пределы экрана).
tileloadstartTileEventВозникает, когда запрашивается тайл.
tileerrorTileEventВозникает при ошибке загрузки тайла.
tileloadTileEventВозникает, когда тайл загружен.
loadTileEventВозникает, когда GridLayer загрузил все видимые тайлы.

События, унаследованные от Layer

Методы

МетодВозвращаетОписание
bringToFront()thisПозиционирует тайловый слой поверх остальных тайловых слоев.
bringToBack()thisПозиционирует тайловый слой под остальными тайловыми слоями.
getAttribution()StringИспользуется элементом управления об авторстве, и возвращает соответствующие свойства.
getContainer()StringВозвращает HTML элемент, который содержит тайлы для данного слоя.
setOpacity( <Number> opacity ) thisМеняет значение opacity слоя.
setZIndex( <Number> zIndex ) thisМеняет значение zIndex слоя.
isLoading()BooleanВозвращает true, если хотя бы один тайл загружен не до конца.
redraw()thisПерересовывает все тайлы, запрашивая их повторно.
getTileSize()PointВозвращает значение опции tileSize приведенное к объекту DG.Point. Используется методом createTile().

Методы, используемые при наследовании

Слои, наследующие от DG.GridLayer должны поддерживать следующие методы:

МетодВозвращаетОписание
createTile( <Object> coords, <Function> done? ) HTMLElementВызывается только из API карт. Метод должен быть переопределен теми классами, которые расширяют GridLayer. Метод должен возвращать HTMLElement для позиции, координаты которой передаются в coords. Если указана функция обратного вызова done, она должна быть вызвана после загрузки и отрисовки тайла.

Методы, унаследованные от Layer

Методы, унаследованные от Evented