Не удается получить доступ к элементу управления Geolocate в Mapbox GL JS для изменения / добавления атрибутов - PullRequest
0 голосов
/ 03 июля 2018

Простой вопрос: какой селектор необходим для доступа к элементу управления Geolocate в Mapbox GL JS?

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

Однако я не смог получить доступ к элементу управления Geolocate ни с помощью прямого javascript, ни с помощью jquery, несмотря на использование большого количества попыток селекторов. Он просто не отвечает ни на что, что я пробовал.

Ниже приведен jsfiddle, показывающий ситуацию. Это простой случай добавления атрибутов заголовка. Я успешно показываю его на навигационных элементах управления, затем безуспешно на элементе управления геолокации.

Это просто какая-то очевидная ошибка селектора, или в элементе геолокации, который мне не хватает, есть что-то принципиально иное? Или это ошибка? https://jsfiddle.net/5413yjmr/

Работает:

document.querySelector('.mapboxgl-ctrl-compass').setAttribute('title', 'Compass Control');

Не работает:

document.querySelector('.mapboxgl-ctrl-geolocate').setAttribute('title', 'Find My Current Location');

Также не работает:

document.querySelector('.mapboxgl-ctrl-icon.mapboxgl-ctrl-geolocate').setAttribute('title', 'Find My Current Location');

Я также сошел с ума, пытаясь использовать различные селекторы, используя jquery, и т. Д.

1 Ответ

0 голосов
/ 03 июля 2018

Кнопка пользовательского интерфейса GeolocateControl настраивается только после асинхронного ответа, если браузер поддерживает геолокацию, поэтому она не доступна сразу в DOM.

https://github.com/mapbox/mapbox-gl-js/blob/d78b2d1cb162388fd16c4b3607cd2f27bd333a5f/src/ui/control/geolocate_control.js#L120

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

Я бы посоветовал вам открыть билет по номеру https://github.com/mapbox/mapbox-gl-js/issues, чтобы он был адресован в Mapbox GL JS.

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

...