Дополнительные слои

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) и объект с опциями.

Опции

Опция Тип Значение
по умолчанию
Описание
pointToLayer Function Функция, определяющая, как точки GeoJSON будут создавать слои API карт. API карт вызывает метод, если он реализован, передавая объекты точек GeoJSON и LatLng. По умолчанию, будут создаваться обычные Маркеры: function(geoJsonPoint, latlng) { return DG.marker(latlng); }
style Function Функция, определяющая Path options для стилизации отображения GeoJSON линий и полигонов. API карт вызывает метод, если он реализован, при каждом добавлении данных. По умолчанию, стили никак не изменяются: function (geoJsonFeature) { return {} }
onEachFeature Function Функция, которая будет вызвана после каждого создания и стилизации нового слоя. Удобно использовать для подключения обработчиков событий и попапов. По умолчанию, никаких дополнительных действий не происходит: function (layer) {}
filter Function Функция, которая определяет, должен ли отображаться указанный объект или нет. По умолчанию, отображаются все объекты: function (geoJsonFeature) { return true; }
coordsToLatLng Function * Функция, которая будет использоваться для преобразования координат 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.

Опции

Опция Тип Значение
по умолчанию
Описание
tileSize Number|Point 256 Ширина и высота тайлов. Используйте число, если ширина и высота одинаковые, или объект DG.point(ширина, высота) в противном случае.
opacity Number 1.0 Уровень полупрозрачности тайлов. Может использоваться в функции createTile().
updateWhenIdle Boolean depends Если значение false, новые тайлы подгружаются в процессе перемещения карты, в противном случае, только после окончания перемещения карты по экрану (можно использовать для лучшей производительности). true по умолчанию на мобильных устройствах, и false в остальных случаях.
updateInterval Number 200 Тайлы не будут обновляться чаще, чем раз в updateInterval миллисекунд.
attribution String null Информация, которая будет отображаться в строке об авторстве, например "© 2GIS".
zIndex Number 1 zIndex для тайлового слоя.
bounds LatLngBounds undefined Если задан, тайлы будут загружаться только для указанного региона, заданного LatLngBounds.
minZoom Number 0 Минимальный уровень масштабирования, при котором будут загружаться тайлы. По умолчанию - вся карта.
maxZoom Number undefined Максимальный уровень масштабирования, при котором будут загружаться тайлы. По умолчанию не задан.
noWrap Boolean false Будет ли зацикливаться отображение слоя при малом масштабе. Если параметр true, слой будет отображен только один раз.
pane String 'tilePane' Панель карты, на которую будет добавлен слой.

События

Событие Данные Описание
loading Event Возникает, когда GridLayer начинает загружать тайлы.
tileunload TileEvent Возникает, когда тайл удаляется с карты (например, при выходе его за пределы экрана).
tileloadstart TileEvent Возникает, когда запрашивается тайл.
tileerror TileEvent Возникает при ошибке загрузки тайла.
tileload TileEvent Возникает, когда тайл загружен.
load TileEvent Возникает, когда 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