Map — JavaScript — Дока

Кратко

Скопировано

Map — коллекция для хранения данных любого типа в виде пар [ключ, значение], то есть каждое значение сохраняется по уникальному ключу, который потом используется для доступа к этому значению. Причём в качестве ключей тоже принимаются значения любого типа.

Основные методы для работы с коллекцией Map:

  • set(ключ, значение) — устанавливает значение;
  • get(ключ) — возвращает значение;
  • has(ключ) — проверяет наличие переданного ключа;
  • values() — возвращает итератор всех значений коллекции;
  • keys() — возвращает итератор всех ключей коллекции;
  • entries() — возвращает итератор пар [ключ, значение];
  • delete(ключ) — удаляет конкретное значение;
  • clear() — полностью очищает коллекцию;
  • forEach(колбэк) — перебирает ключи и значения коллекции.

Содержит свойство size для получения количества значений в коллекции.

Пример

Скопировано

const someData = new Map()someData.set('1', 'Значение под строковым ключом 1')someData.set(1, 'Значение под числовым ключом 1')someData.set(true, 'Значение под булевым ключом true')console.log(someData.size)// 3console.log(someData.get(1))// Значение под числовым ключом 1console.log(someData.get('1'))// Значение под строковым ключом 1console.log(someData.has(true))// truesomeData.clear()console.log(someData.size)// 0
          const someData = new Map()
someData.set('1', 'Значение под строковым ключом 1')
someData.set(1, 'Значение под числовым ключом 1')
someData.set(true, 'Значение под булевым ключом true')
console.log(someData.size)
// 3
console.log(someData.get(1))
// Значение под числовым ключом 1
console.log(someData.get('1'))
// Значение под строковым ключом 1
console.log(someData.has(true))
// true
someData.clear()
console.log(someData.size)
// 0

Как понять

Скопировано

Создание коллекции

Скопировано

Коллекция создаётся при помощи конструктора.

Можно создать пустой Map:

const map = new Map()console.log(map.size)// 0
          const map = new Map()
console.log(map.size)
// 0

А можно сразу передать начальные значения. Для этого в конструктор нужно передать массив, состоящий из других массивов. Эти массивы должны состоять из двух элементов: первый элемент — ключ, а второй — значение:

const map = new Map([['js', 'JavaScript'], ['css', 'Cascading Style Sheets']])console.log(map.size)// 2console.log(map.get('js'))// JavaScript
          const map = new Map([['js', 'JavaScript'], ['css', 'Cascading Style Sheets']])
console.log(map.size)
// 2
console.log(map.get('js'))
// JavaScript

Работа с коллекцией

Скопировано

Map предоставляет небольшой набор удобных методов для работы с данными.

Чтобы сохранить значение в коллекции, нужно использовать метод set(). Первым аргументом передаём ключ, а вторым — значение:

const map = new Map()map. set('js', 'JavaScript')
          const map = new Map()
map.set('js', 'JavaScript')

Получить значение можно при помощи метода get()

единственным аргументом которого передаём ключ, данные которого хотим получить. Если в коллекции нет значения для переданного ключа, get() вернёт undefined.

const map = new Map()map.set('js', 'JavaScript')console.log(map.get('js'))// JavaScript
          const map = new Map()
map.set('js', 'JavaScript')
console.log(map.get('js'))
// JavaScript

Узнать, есть ли в коллекции значение с конкретным ключом, можно с помощью метода has():

const map = new Map()map.set('js', 'JavaScript')console.log(map.has('js'))// trueconsole.log(map.has('css'))// false
          
const map = new Map() map.set('js', 'JavaScript') console.log(map.has('js')) // true console. log(map.has('css')) // false

Удалять конкретное значение можно методом delete(), который также принимает ключ в качестве аргумента. delete() возвращает true, если элемент для переданного ключа существовал и был удалён. Полностью очищает коллекцию метод clear():

const map = new Map()map.set('html', 'HTML')map.set('css', 'CSS')map.set('js', 'JavaScript')console.log(map.size)// 3map.delete('css')console.log(map.size)// 2map.clear()console.log(map.size)// 0
          
const map = new Map() map.set('html', 'HTML') map.set('css', 'CSS') map.set('js', 'JavaScript') console.log(map.size) // 3 map.delete('css') console.log(map.size) // 2 map.clear() console.log(map.size) // 0

Обход значений

Скопировано

Map предоставляет встроенный итератор для обхода значений:

const map = new Map()map. set('html', 'HTML')map.set('css', 'CSS')map.set('js', 'JavaScript')for (let [key, value] of map) {  console.log(`${key} - ${value}`)}// html - HTML// css - CSS// js - JavaScript
          
const map = new Map() map.set('html', 'HTML') map.set('css', 'CSS') map.set('js', 'JavaScript') for (let [key, value] of map) { console.log(`${key} - ${value}`) } // html - HTML // css - CSS // js - JavaScript

А ещё можно сделать то же самое при помощи метода forEach():

const map = new Map()map.set('html', 'HTML')map.set('css', 'CSS')map.set('js', 'JavaScript')map.forEach((value, key) => {  console.log(`${key} - ${value}`)})// html - HTML// css - CSS// js - JavaScript
          const map = new Map()
map.set('html', 'HTML')
map.set('css', 'CSS')
map.set('js', 'JavaScript')
map.forEach((value, key) => {
  console.log(`${key} - ${value}`)
})
// html - HTML
// css - CSS
// js - JavaScript

⚠️

Обратите внимание: когда вызывается метод forEach(), в колбэк передаются текущий ключ и соответствующее ему значение — индексов в Map нет.

При обходе значений Map всегда выводит их в том порядке, в котором они были добавлены.

Отличия от объектов

Скопировано

Обычные объекты тоже подходят для хранения данных. Однако ключи в них могут быть только строками или символами:

const obj = {  1: 'String',  '2': 'Number',  true:'Bool',}console.log(Object.keys(obj))// [ '1', '2', 'true' ]
          const obj = {
  1: 'String',
  '2': 'Number',
  true:'Bool',
}
console.log(Object.keys(obj))
// [ '1', '2', 'true' ]

Map же позволяет использовать в качестве ключа любое значение: объект, функцию, примитивные значения и даже null, undefined и NaN. Для сравнения ключей используется алгоритм SameValueZero.

Как работает алгоритм SameValueZero

Кратко

Алгоритм SameValueZero работает так же, как и строгое сравнение при помощи

=== с единственным отличием: для SameValueZero NaN равен NaN. Именно по этой причине в качестве ключей Map можно использовать NaN — мы можем найти такой ключ простым сравнением.

Подробно

Алгоритм SameValueZero для сравнения переменных x и y согласно спецификации:

  1. Если типы x и y отличаются, возвращаем false (Возможные типы: Undefined, Null, Boolean, String, Number, BigInt, Object или Symbol. Не путать с результатом выполнения оператора
    typeof
    ).
  2. Если тип x и y Number, то:
    • Если значение x NaN и значение y NaN, возвращаем true.
    • Если значение x -0, а значение y +0, возвращаем true.
    • Если значение x +0, а значение y -0, возвращаем true.
    • Возвращаем true, если значение
      x
      равно значению y. В противном случае возвращаем false.
  3. Если тип x и y BigInt, то возвращаем true, если значение x равно значению y. В противном случае возвращаем false.
  4. Если тип x и y Undefined, то возвращаем true.
  5. Если тип x и y Null, то возвращаем true.
  6. Если тип x и y String, то возвращаем true, если x и y одинаковые последовательности символов (одинаковая длина и такие же коды символов на соответствующих индексах). В противном случае возвращаем
    false
    .
  7. Если тип x и y Boolean, то возвращаем true, если оба значения x и y true или оба значения x и y false. В противном случае возвращаем false.
  8. Если тип x и y Symbol, то возвращаем true, если x и y являются одним и тем же значением символа. В противном случае возвращаем
    false
    .
  9. Если типы x и y наследуются от Object, то возвращаем true, если x и y ссылаются на один и тот же объект. В противном случае возвращаем false.
const func = (name) => `Hello, ${name}`const obj = { foo: 'bar' }const map = new Map()map.set(func, 'func value')map.set(obj, 'object value')map.set(undefined, 'undefined value')map.set(NaN, 'NaN value')map.set(null, 'null value')console.log(map.get(func))// func valueconsole.log(map.get(obj))// object valueconsole.log(map.get(undefined))// undefined valueconsole.log(map.get(NaN))// NaN valueconsole.log(map.get(null))// null value
          const func = (name) => `Hello, ${name}`
const obj = { foo: 'bar' }
const map = new Map()
map. set(func, 'func value')
map.set(obj, 'object value')
map.set(undefined, 'undefined value')
map.set(NaN, 'NaN value')
map.set(null, 'null value')
console.log(map.get(func))
// func value
console.log(map.get(obj))
// object value
console.log(map.get(undefined))
// undefined value
console.log(map.get(NaN))
// NaN value
console.log(map.get(null))
// null value

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

const map = new Map()map.set(1, 'numeric 1')map.set('1', 'string 1')console.log(map.size)// 2console.log(map.get(1))// numeric 1console.log(map.get('1'))// string 1
          const map = new Map()
map.set(1, 'numeric 1')
map.set('1', 'string 1')
console.log(map.size)
// 2
console.log(map.get(1))
// numeric 1
console.log(map.get('1'))
// string 1

При использовании непримитивных типов в качестве ключей стоит помнить, что они хранятся по ссылке, поэтому для доступа к заданному с помощью объекта ключу, необходимо передавать тот же самый объект.

Создадим две переменные, которые указывают на один и тот же объект и добавим их ключами в Map:

const dataObject = { position: 'left' }const sameObject = dataObjectconsole.log(dataObject === sameObject)// trueconst map = new Map()map.set(dataObject, 'value for dataObject')map.set(sameObject, 'value for sameObject')console.log(map.size)// 1console.log(map.get(dataObject))// value for sameObjectconsole.log(map.get(sameObject))// value for sameObject
          const dataObject = { position: 'left' }
const sameObject = dataObject
console.log(dataObject === sameObject)
// true
const map = new Map()
map.set(dataObject, 'value for dataObject')
map.set(sameObject, 'value for sameObject')
console.log(map.size)
// 1
console.log(map.get(dataObject))
// value for sameObject
console.log(map.get(sameObject))
// value for sameObject

А вот если мы возьмём два отдельных объекта с одинаковым содержимым, то мы получим два разных ключа:

const playerOne = { position: 'left' }const playerTwo = { position: 'left' }console. log(playerOne === playerTwo)// falseconst map = new Map()map.set(playerOne, 'player 1')map.set(playerTwo, 'player 2')console.log(map.size)// 2console.log(map.get(playerOne))// player 1console.log(map.get(playerTwo))// player 2
          const playerOne = { position: 'left' }
const playerTwo = { position: 'left' }
console.log(playerOne === playerTwo)
// false
const map = new Map()
map.set(playerOne, 'player 1')
map.set(playerTwo, 'player 2')
console.log(map.size)
// 2
console.log(map.get(playerOne))
// player 1
console.log(map.get(playerTwo))
// player 2

javascript. Можно ли отсортировать объект карты ES6?

Краткий ответ

 new Map([...map].sort((a, b) =>
   // Некоторая функция сортировки, сравнивающая ключи с a[0] b[0] или значения с a[1] b[1]
 ))
 

Если вы ожидаете строки: Как обычно для .sort вам нужно вернуть -1 если меньше и 0 если равно; для строк рекомендуется использовать .localeCompare() , который делает это правильно и автоматически обрабатывает неудобные символы, такие как ä , где позиция зависит от языкового стандарта пользователя.

Вот простой способ отсортировать карту по строке ключей :

 new Map([...map].sort((a, b) => String(a[0]).localeCompare(b[ 0])))
 

…и по строке значений :

 new Map([...map].sort((a, b) => String(a[1]).localeCompare(b[1])))
 

Они типобезопасны в том смысле, что они не будут выдавать ошибку, если попадут на нестроковый ключ или значение. String() в начале заставляет a , чтобы быть строкой (и это хорошо для удобочитаемости), а .localeCompare() сама заставляет свой аргумент быть строкой, не вызывая ошибки.


Подробно с примерами

tldr: ...map.entries() избыточно, просто ...map подойдет; и ленивый .sort() без передачи функции сортировки рискует странными ошибками пограничного случая, вызванными принуждением строки.

.entries() в [...map.entries()] (предлагается во многих ответах) является избыточным, возможно, добавляет дополнительную итерацию карты, если JS-движок не оптимизирует это для вас.

В простом тестовом примере вы можете сделать то, о чем просит вопрос, с помощью:

 new Map([...map].sort())
 

… который, если все ключи являются строками, сравнивает сжатые и принудительно соединенные запятыми строки ключ-значение, такие как '2-1,foo' и '0-1,[object Object]' , возвращая новая карта с новым порядком размещения:

Примечание: если вы видите только {} в выводе консоли SO, посмотрите в своей реальной консоли браузера

 const map = new Map([
  ['2-1', 'фу'],
  ['0-1', {бар: 'бар'}],
  ['3-5', () => 'фуз'],
  ['3-2', ['баз']]
])
console.log(new Map([...map].sort())) 

ОДНАКО , не рекомендуется полагаться на подобное принуждение и строковое преобразование. Вы можете получить такие сюрпризы, как:

 const map = new Map([
  ['2', '3, а?'],
  ['2,1', 'фу'],
  ['0,1', {бар: 'бар'}],
  ['3,5', () => 'фуз'],
  ['3,2', ['баз']],
])
// Сравнивает '2,3, ну?' с «2,1, фу»
// Поэтому сортирует ['2', '3,buh?'] ******ПОСЛЕ****** ['2,1', 'foo']
console. log('А?', новая карта([...карта].sort()))
// Посмотрим, что именно каждая итерация использует в качестве компаратора
for (постоянная итерация карты) {
  console.log(итерация.toString())
} 

Такие ошибки очень сложно отлаживать — не рискуйте!

Если вы хотите выполнить сортировку по ключам или значениям, лучше всего получить к ним явный доступ с помощью a[0] и b[0] в функции сортировки, как указано выше; или с деструктуризацией массива в аргументах функции:

 const map = new Map([
  ['2,1', 'это перезаписано'],
  ['2,1', '0,1'],
  ['0,1', '2,1'],
  ['2,2', '3,5'],
  ['3,5', '2,1'],
  ['2', ',9,9']
])
// Примеры использования деструктуризации массива. Мы говорим «ключи» и «ценности».
// в именах функций, чтобы было ясно и понятно, каково их намерение.
const sortStringKeys = ([a], [b]) => String(a).localeCompare(b)
const sortStringValues ​​= ([a], [b]) => String(a).localeCompare(b)
console.log('По ключам:', new Map([...map].sort(sortStringKeys)))
console. log('По значениям:', new Map([...map].sort(sortStringValues))) 

И если вам нужно сравнение, отличное от алфавитного порядка строк, не забывайте всегда возвращать -1 и 1 для до и после, а не false или 0 , как с необработанным a[0] > b[0] , потому что это считается равным.

Карта | Mapbox GL JS

Карта | Картбокс GL JS | Mapbox

All docschevron-rightMapbox GL JSchevron-rightarrow-leftAPI Referencechevron-rightMap

src/ui/map.js

Объект Map представляет карту на вашей странице. Он раскрывает методы и свойства, позволяющие программно изменять карту, и запускает события, когда пользователи взаимодействуют с ним.

Вы создаете карту , указав контейнер и другие параметры. Затем Mapbox GL JS инициализирует карту на странице и возвращает вашу карту . объект.

Расширяется по событию.

новый класс карты (варианты: объект)

параметры (объект)

Имя Описание

options. accessToken

строка по умолчанию:

ноль

Если указано, карта будет использовать это жетон вместо определенного в mapboxgl.accessToken .

options.antialias

логическое значение по умолчанию:

false

Если правда , контекст gl будет создан с сглаживание MSAA , что может быть полезно для сглаживания пользовательских слоев. Это ложь по умолчанию в качестве оптимизации производительности.

options.attributionControl

логический по умолчанию:

true

Если правда , ан АтрибуцияКонтроль будут добавлены на карту.

доп. подшипник

номер по умолчанию:

0

Начальный несущий (поворот) карты, измеренный в градусах против часовой стрелки с севера. Если подшипник не указан в параметрах конструктора, Mapbox GL JS будет искать его в объекте стиля карты. Если он также не указан в стиле, по умолчанию будет использоваться 0 .

options.bearingSnap

номер по умолчанию:

7

Порог, измеряемый в градусах, который определяет, когда карта подшипник сместится на север. Например, с подшипникSnap из 7, если пользователь вращает карту в пределах 7 градусов северной широты, карта автоматически привязывается к точному северу.

options.bounds

LngLatBoundsLike по умолчанию:

null

Начальные границы карты. Если границ указан, он переопределяет центр и зум варианты конструктора.

options.boxZoom

логический по умолчанию:

true

Если правда , включено взаимодействие «масштабирование окна» (см. BoxZoomHandler ).

options.center

LngLatLike по умолчанию:

[0,0]

Исходный географический Центральная точка карты. Если центр не указан в параметрах конструктора, Mapbox GL JS будет искать его в объекте стиля карты. Если он также не указан в стиле, по умолчанию будет использоваться [0, 0] Примечание. Mapbox GL использует порядок координат долготы и широты (в отличие от широты и долготы) для соответствия GeoJSON.

options.clickTolerance

число по умолчанию:

3

Максимальное количество пикселей, на которое пользователь может нажмите, чтобы он считался действительным кликом (в отличие от перетаскивание мышью).

options.collectResourceTiming

логическое значение по умолчанию:

false

Если правда , информация Resource Timing API будет собираться для запросов, сделанных веб-воркерами GeoJSON и Vector Tile (эта информация обычно недоступна из основного потока Javascript). Информация будет возвращена в ресурсТиминг собственность соответствующих данные события.

options.container

(HTMLElement | строка)
Элемент HTML, в котором Mapbox GL JS будет отображать карту, или строка элемента идентификатор . Указанный элемент не должен иметь дочерних элементов.

options.cooperativeGestures

логический?
Если правда , масштабирование с помощью прокрутки потребует нажатия клавиши Ctrl или ⌘ во время прокрутки для увеличения карты, а сенсорное панорамирование потребует использования двух пальцев при панорамировании для перемещения карты. Сенсорный шаг потребует трех пальцев для активации, если он включен.

options.crossSourceCollisions

логическое значение по умолчанию:

true

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

options.customAttribution

(строка | Массив<строка>) по умолчанию:

null

Строка или строки для отображения в АтрибуцияКонтроль . Применимо только если options.attributionControl является правда .

options.doubleClickZoom

логическое значение по умолчанию:

true

Если правда , взаимодействие «двойной щелчок для увеличения» включено (см. DoubleClickZoomHandler ).

options.dragPan

(логический | Объект) по умолчанию:

true

Если правда , взаимодействие «перетаскивание для панорамирования» включено. Ан Объект значение передается как опции в DragPanHandler # включить .

options. dragRotate

логический по умолчанию:

true

Если правда , взаимодействие «перетаскивание для вращения» включено (см. DragRotateHandler ).

options.fadeDuration

число по умолчанию:

300

Управляет длительностью анимации появления/исчезновения для коллизий меток в миллисекундах. Этот параметр влияет на все слои символов. Этот параметр не влияет на продолжительность переходов стилей во время выполнения или перекрестного затухания растровых плиток.

options.failIfMajorPerformanceCaveat

логическое значение по умолчанию:

ложь

Если правда , создание карты завершится ошибкой, если производительность Mapbox GL JS будет значительно хуже ожидаемой (будет использоваться программный рендерер).

options.fitBoundsOptions

Объект?
А Карта#fitBounds объект опций для использования только при установке начального границ предоставлено выше.

options.hash

(логическое значение | строка) по умолчанию:

ложь

Если правда , карта позиция (масштаб, широта центра, долгота центра, азимут и шаг) будут синхронизированы с хэш-фрагментом URL-адреса страницы. Например, http://path/to/my/page.html#2.59/39.26/53.07/-24.1/60 . Опционально может быть предоставлена ​​дополнительная строка для указания хэша в стиле параметра, например http://path/to/my/page.html#map=2.59/39.26/53.07/-24.1/60&foo=bar , где фу является настраиваемым параметром и бар — произвольный хеш, отличный от хэша карты.

options.interactive

логическое значение по умолчанию:

true

Если ложь , к карте не будут привязаны прослушиватели мыши, касания или клавиатуры, поэтому она не будет реагировать на взаимодействие.

options. keyboard

логический по умолчанию:

верно

Если правда , сочетания клавиш включены (см. KeyboardHandler ).

options.language

( "auto" | string | Array) по умолчанию:

null

901 53
Строка с языковым тегом BCP 47 или массив таких строки, представляющие желаемые языки, используемые для меток карты и компонентов пользовательского интерфейса. Языки можно задавать только для источников векторных листов Mapbox. По умолчанию GL JS не устанавливает язык, поэтому язык листов Mapbox будет определяться TileJSON источника векторных листов. Допустимые языковые строки должны быть Код языка BCP-47 . Неподдерживаемые коды BCP-47 не будут включать никаких переводов. Неверные коды приведут к исправимой ошибке. Если у ярлыка нет перевода для выбранного языка, он будет отображаться на местном языке ярлыка. Если опция установлена ​​на авто , GL JS выберет предпочитаемый пользователем язык в соответствии с настройками браузера. окно.навигатор.язык свойство. Если локаль не задано отдельно, этот язык также будет использоваться для локализации пользовательского интерфейса для поддерживаемых языков.

options.locale

Object default:

null

Патч для применения к таблице локализации по умолчанию для таких строк пользовательского интерфейса, как как всплывающие подсказки управления. языковой стандарт объект сопоставляет идентификаторы строк пользовательского интерфейса в пространстве имен с переведенными строками на целевом языке; видеть src/ui/default_locale.js для примера со всеми поддерживаемыми строковыми идентификаторами. Объект может указывать все строки пользовательского интерфейса (таким образом добавляя поддержку нового перевода) или только подмножество строк (таким образом исправляя таблицу перевода по умолчанию).

options.localFontFamily

string по умолчанию:

false

Определяет CSS семейство шрифтов для локального переопределения генерации всех глифов. Настройки шрифта из стиля карты будут игнорироваться, за исключением ключевых слов веса шрифта (светлый/обычный/средний/жирный). Если установлено, этот параметр переопределяет параметр в localIdeographFontFamily.

options.localIdeographFontFamily

строка по умолчанию:

'sans-serif'

Определяет семейство шрифтов CSS для локального переопределения генерации глифов в «Унифицированных иероглифах CJK», «Хирагана» , диапазоны «Катакана», «Слоги хангыль» и «Символы и пунктуация CJK». В этих диапазонах настройки шрифта из стиля карты будут игнорироваться, за исключением ключевых слов веса шрифта (светлый/обычный/средний/жирный). Установлен в ложь , чтобы включить настройки шрифта из стиля карты для этих диапазонов глифов. Обратите внимание, что Мапбокс Студия устанавливает это значение в ложь по умолчанию. Цель этой опции — избежать запросов сервера глифов, интенсивно использующих полосу пропускания. Пример использования этой опции см. Используйте местные идеограммы .

options.logoPosition

string по умолчанию:

'нижний левый'

Строка, представляющая позицию Mapbox надпись на карте. Допустимые варианты вверху слева , вверху справа , нижний левый , внизу справа .

options.maxBounds

LngLatBoundsLike по умолчанию:

null

Если установлено, карта будет минусовой обучены заданным границам.

options.maxPitch

номер по умолчанию:

85

Максимальный шаг карты (0-85).

options.maxTileCacheSize

число по умолчанию:

ноль источник. Если этот параметр не указан, кеш будет иметь динамический размер в зависимости от текущего окна просмотра.

options.maxZoom

номер по умолчанию:

22

Максимальный уровень масштабирования карты (0-24).

options.minPitch

номер по умолчанию:

0

Минимальный шаг карты (0-85).

options.minTileCacheSize

число по умолчанию:

ноль

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

options.minZoom

номер по умолчанию:

0

Минимальный уровень масштабирования карты (0-24).

options.optimizeForTerrain

логическое значение по умолчанию:

true

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

options.performanceMetricsCollection

логическое значение по умолчанию:

true

Если правда , mapbox-gl будет собирать и отправлять показатели производительности.

options.pitch

номер по умолчанию:

0

Начальный подача (наклон) карты, измеренный в градусах от плоскости экрана (0-85). Если шаг не указан в параметрах конструктора, Mapbox GL JS будет искать его в объекте стиля карты. Если он также не указан в стиле, по умолчанию будет использоваться 0 .

options.pitchWithRotate

логический по умолчанию:

true

Если ложь , управление шагом (наклоном) карты с взаимодействием «перетаскивание для поворота» будет отключено.

options.preserveDrawingBuffer

логический по умолчанию:

ложь

Если правда , холст карты можно экспортировать в PNG с помощью карта.getCanvas().toDataURL() . Это ложь по умолчанию в качестве оптимизации производительности.

options.projection

ProjectionSpecification по умолчанию:

'mercator'

проекция карта должна отображаться в . Поддерживаемые проекции:
  • Равновеликая коническая проекция Альберса как Альберса
  • Equal Earth равновеликая псевдоцилиндрическая проекция как equalEarth
  • Равноугольный (Пластина Carrée/WGS84) как Равноугольный
  • 3d глобус как глобус
  • Lambert Conformal Conic as lambertConformalConic
  • Цилиндрическая картографическая проекция Меркатора как Меркатор
  • Псевдоцилиндрическая картографическая проекция Natural Earth как натуральныйЗемля
  • Азимутальная картографическая проекция Winkel Tripel как winkelTripel Конические проекции, такие как Альберс и Ламберт, имеют настраиваемые свойства центр и параллели , которые позволяют разработчикам определять область, в которой проекция имеет минимальное искажение; см. пример того, как настроить эти свойства.

options.refreshExpiredTiles

логический по умолчанию:

верно

Если ложь , карта не будет пытаться повторно запрашивать плитки после истечения срока их действия в соответствии с HTTP-запросом. КэшКонтроль / истекает заголовки.

options.renderWorldCopies

логический по умолчанию:

true

Если правда , несколько копий мира будут отображаться рядом за пределами -180 и 180 градусов долготы. Если установлено ложь :
  • Когда карта настолько уменьшена, что одно изображение мира не заполняет всю карту контейнер, за пределами 180 и -180 градусов долготы будет пустое пространство.
  • Объекты, пересекающие долготу 180 и -180 градусов, будут разделены на две части (с одной частью на правом краю карте, а другой на левом краю карты) на каждом уровне масштабирования.

options.respectPrefersReducedMotion

логический по умолчанию:

истина

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

options.scrollZoom

(логический | объект) по умолчанию:

true

Если правда , взаимодействие «прокрутить для увеличения» включено. Ан Объект значение передается как опции в ScrollZoomHandler # включить .

options.style

(Объект | строка)
Стиль Mapbox карты. Это должен быть объект JSON, соответствующий схема, описанная в Спецификация стиля Mapbox или URL-адрес к такому JSON. Может принимать нулевое значение, чтобы разрешить добавление стиля вручную.

Чтобы загрузить стиль из Mapbox API, вы можете использовать URL вида mapbox://styles/:owner/:style , где :owner — имя вашей учетной записи Mapbox, а :style — идентификатор стиля. Вы также можете использовать Стиль, принадлежащий Mapbox:

  • мапбокс://стили/мапбокс/улицы-v11
  • mapbox://styles/mapbox/outdoors-v11
  • мапбокс://стили/мапбокс/свет-v10
  • мапбокс://стили/мапбокс/темный-v10
  • мапбокс://стили/мапбокс/сателлит-v9
  • mapbox://styles/mapbox/satellite-streets-v11
  • mapbox://styles/mapbox/navigation-day-v1
  • mapbox://styles/mapbox/navigation-night-v1 .

Наборы листов, размещенные с помощью Mapbox, можно оптимизировать по стилю, если добавить ?optimize=true в конец URL-адреса стиля, например mapbox://styles/mapbox/streets-v11?optimize=true . Узнайте больше о векторных плитках, оптимизированных по стилю, в нашей документации по API.

options.testMode

boolean по умолчанию:

false

Замалчивает ошибки и предупреждения, сгенерированные из-за недопустимого accessToken , полезно при использовании библиотеки для написания модульных тестов.

options.touchPitch

(логический | объект) по умолчанию:

true

Если правда , взаимодействие «перетаскивание в поле» включено. Ан Объект значение передается как опции в TouchPitchHandler .

options.touchZoomRotate

(логический | объект) по умолчанию:

true

Если правда , взаимодействие «разведение пальцев для поворота и масштабирования» включено. Ан Объект значение передается как опции в TouchZoomRotateHandler#enable .

options.trackResize

логический по умолчанию:

верно

Если правда , размер карты будет автоматически изменяться при изменении размера окна браузера.

options.transformRequest

RequestTransformFunction по умолчанию:

ноль внешний URL-адрес. Обратный вызов можно использовать для изменения URL-адреса, установки заголовков или установки свойства учетных данных для запросов из разных источников. Ожидается возвращение Параметры запроса объект с адрес свойство и по желанию заголовки и учетные данные характеристики.

options.useWebGL2

логическое значение по умолчанию:

false

Это экспериментальная функция. Если true и возможности устройства поддерживают это, будет создан контекст WebGL 2.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *