Добавление простого уровня данных

Веб-SDK Azure Maps предоставляет модуль Spatial IO, включающий класс. Этот класс упрощает отрисовку стилизованных объектов на карте. Он может даже визуализировать наборы данных, которые обладают свойствами стиля, а также наборы данных, содержащие типы со смешанной геометрией.

Простой уровень данных обеспечивает эту функциональность путем упаковки нескольких слоев отрисовки и использования выражений стиля. Выражения стиля ищут обёрнутые слои для поиска общих свойств стиля. Функции atlas.io.read и atlas.io.write используют эти свойства для чтения и записи стилей в поддерживаемый формат файла. При добавлении свойств в поддерживаемый формат файла можно использовать этот файл для таких целей, как отображение стилей функций на карте.

Класс SimpleDataLayer также предоставляет встроенную функцию всплывающего окна с шаблоном всплывающего окна. Всплывающее окно появляется при выборе функции. Этот уровень также поддерживает кластеризованные данные. При выборе кластера карта увеличивает масштаб кластера и расширяет его в отдельные точки и подкластеры. Вы можете отключить функцию всплывающего окна, если она не нужна.

Класс SimpleDataLayer предназначен для использования в больших наборах данных, которые включают функции с множеством примененных типов геометрии и стилей. При использовании этого класса добавляется нагрузка на шесть слоев, содержащих выражения стиля. Если необходимо отобразить только несколько типов геометрии и стилей в компоненте, это может оказаться более эффективным для использования основного слоя отрисовки. Дополнительные сведения см. в разделе "Добавление пузырькового слоя на карту", добавление слоя линии на карту и добавление многоугольника на карту.

Использование простого уровня данных

Вы можете использовать класс SimpleDataLayer так же, как и другие слои отрисовки. В следующем коде показано, как использовать простой слой данных на карте:

//Create a data source and add it to the map.
var datasource = new atlas.source.DataSource();
map.sources.add(datasource);

//Add a simple data layer for rendering data.
var layer = new atlas.layer.SimpleDataLayer(datasource);
map.layers.add(layer);

В следующем фрагменте кода показано, как использовать простой слой данных, который ссылается на данные из онлайн-источника:

<script src="https://atlas.microsoft.com/sdk/javascript/spatial/0/atlas-spatial.min.js"></script>

<script>
    function InitMap() {
        var map = new atlas.Map("myMap", {
            center: [-73.967605, 40.780452],
            zoom: 12,
            view: "Auto",

            //Add authentication details to connect to Azure Maps.
            authOptions: {
                // Get an Azure Maps key at https://azuremaps.com/.
                authType: "subscriptionKey",
                subscriptionKey: '{Your-Azure-Maps-Subscription-key}'
            }
        });

        //Wait until the map resources are ready.
        map.events.add("ready", function () {
            //Create a data source and add it to the map.
            var datasource = new atlas.source.DataSource();
            map.sources.add(datasource);

            //Add a simple data layer for rendering data.
            var layer = new atlas.layer.SimpleDataLayer(datasource);
            map.layers.add(layer);

            //Load an initial data set.
            const dataSet = {
                type: "FeatureCollection",
                bbox: [0, 0, 0, 0],
                features: [
                    {
                        type: "Feature",
                        geometry: {
                            type: "Point",
                            coordinates: [0, 0]
                        },
                        properties: {
                            color: "red"
                        }
                    }
                ]
            };

            loadDataSet(dataSet);

            function loadDataSet(r) {
                //Update the features in the data source.
                datasource.setShapes(r);

                //If bounding box information is known for data, set the map view to it.
                if (r.bbox) {
                    map.setCamera({
                        bounds: r.bbox,
                        padding: 50
                    });
                }
            }
        });
    }
</script>

При добавлении объектов в источник данных простой слой данных отображает их наиболее оптимальным образом. Стили можно задать в качестве свойств для каждой отдельной функции.

В приведенном выше примере кода показана функция точки нотации объектов JavaScript (GeoJSON) с заданным colorсвойствомred.

Пример кода отображает функцию точки с помощью простого слоя данных, а результат отображается следующим образом.

Снимок экрана карты с координатами 0, 0, на котором показана красная точка над синей водой; Красная точка была добавлена с помощью слоя символов.

Примечание.

Значение из источника "coordinates": [0, 0] данных переопределяет координаты center: [-73.967605, 40.780452] , заданные при инициализации карты.

Простой уровень данных — это мощный инструмент в следующих сценариях:

  • Источник данных включает несколько типов признаков.
  • Функции в наборе данных имеют несколько свойств стиля, которые задаются по отдельности.
  • Вы не уверены, что содержит набор данных.

Например, при анализе веб-каналов XML-данных может не быть известно о типах стиля и геометрии функций. В примере параметров уровня простых данных показано, как простой слой данных отображает функции файла языка разметки ключей (KML). Также можно просмотреть параметры в SimpleDataLayer классе. Исходный код этого примера см. в разделе "Простой уровень данных" options.html в примерах кода Azure Maps в GitHub.

Снимок экрана: карта с панелью слева с простыми параметрами слоя данных.

Примечание.

На этом простом уровне данных класс popup template применяется для отображения всплывающих окон KML или свойств функций в виде таблицы. По умолчанию все содержимое, отображаемое во всплывающем окне, помещается в iFrame в качестве меры безопасности. Однако существуют определенные ограничения:

  • Все функции блокировки указателя, основные функции навигации, скрипты и формы отключены. Ссылки могут открываться на новой вкладке при их выборе.
  • Старые браузеры, которые не поддерживают srcdoc параметр в iFrames, могут отображать только небольшое количество содержимого.

Если вы доверяете данным, загруженным в всплывающие окна, и хотите, чтобы всплывающие скрипты могли получить доступ к приложению, вы можете отключить эту функцию. Просто задайте параметр sandboxContent в шаблоне всплывающего окна false.

Поддерживаемые по умолчанию свойства стиля

Простой слой данных упаковывает несколько основных слоев отрисовки: пузырь, символ, линия, многоугольник и экструндированный многоугольник. В нем используются выражения для поиска допустимых свойств стиля для отдельных функций.

Двумя основными наборами поддерживаемых имен свойств являются Azure Maps и GitHub. Большинство имен свойств параметров слоя Azure Maps поддерживаются в простом слое данных в качестве свойств стиля функций. Некоторые параметры слоя включают выражения, поддерживающие имена свойств стиля, которые часто используются GitHub.

Поддержка GeoJSON-карт на GitHub определяет эти имена свойств, которые используются для оформления файлов GeoJSON, хранящихся и отображаемых на платформе. Большинство свойств стилизации GitHub поддерживаются в простом слое данных, за исключением marker-symbol свойств стилизации.

Если читатель сталкивается с менее распространенным свойством стиля, он преобразует его в самое похожее свойство стиля Azure Maps. Кроме того, можно переопределить выражения стиля по умолчанию с помощью getLayers функции простого слоя данных и обновления параметров на любом из уровней.

В следующих разделах содержатся сведения о свойствах стиля по умолчанию, поддерживаемых простым уровнем данных. Порядок поддерживаемых имен свойств также является приоритетом. Если для одного и того же параметра слоя определены два свойства стиля, первый в списке имеет приоритет. Цвета могут быть любым значением цвета CSS3 (HEX, RGB, RGBA, HSL, HSLA) или именованным значением цвета.

Свойства стиля слоя пузырьков

Если функция является Point или MultiPoint, и не имеет свойства изображения для использования в качестве пользовательского значка для отображения точки как символа, она отрисовывается с помощью элемента BubbleLayer.

Параметр слоя Поддерживаемые имена свойств Значение по умолчанию
color color, marker-color '#1A73AA'
radius size 1, marker-size2, scale1 8
strokeColor strokeColor, stroke '#FFFFFF'

1 Значения размера и шкалы считаются скалярными значениями и умножаются на 8.

2 Если указан параметр GitHub marker-size , радиус использует следующие значения:

Размер маркера Радиус
small 6
medium 8
large 12

Кластеры также отображаются на уровне пузырьков. По умолчанию радиус кластера имеет значение 16. Цвет кластера зависит от количества точек в кластере, как определено в следующей таблице:

Количество точек Цвет
>= 100 red
>= 10 yellow
< 10 green

Свойства стиля символа

Если функция является Point или MultiPoint, с свойством изображения, используемым в качестве пользовательского значка для отображения точки в виде символа, она отображается с помощью SymbolLayer.

Параметр слоя Поддерживаемые имена свойств значение по умолчанию
image image none
size size, marker-size1 1
rotation rotation 0
offset offset [0, 0]
anchor anchor 'bottom'

1 Если указан параметр GitHub marker-size , для параметра размера значка используются следующие значения:

Размер маркера Размер символа
small 0.5
medium 1
large 2

Если функция точки является кластером, point_count_abbreviated свойство отображается как текстовая метка. Изображение не отображается.

Свойства стиля линии

Если функция — это LineString, MultiLineStringPolygonили MultiPolygonона отображается с помощью LineLayerфункции.

Параметр слоя Поддерживаемые имена свойств Значение по умолчанию
strokeColor strokeColor, stroke '#1E90FF'
strokeWidth strokeWidth, , stroke-widthstroke-thickness 3
strokeOpacity strokeOpacity, stroke-opacity 1

Свойства стиля многоугольника

Если объект является Polygon или MultiPolygon, и не имеет свойства высоты, или если свойство высоты равно нулю, он отрисовывается с помощью PolygonLayer.

Параметр слоя Поддерживаемые имена свойств Значение по умолчанию
fillColor fillColor, fill '#1E90FF'
fillOpacity fillOpacity, 'fill-opacity 0.5

Свойства стиля вытянутого многоугольника

Если Polygon или MultiPolygon является функцией и имеет свойство высоты со значением больше нуля, оно отрисовывается с помощью PolygonExtrusionLayer.

Параметр слоя Поддерживаемые имена свойств Значение по умолчанию
base base 0
fillColor fillColor, fill '#1E90FF'
height height 0

Дополнительные сведения о классах и методах в этой статье:

Ознакомьтесь со следующими статьями, чтобы получить дополнительные примеры кода для добавления в карты: