无法访问Mapbox GL JS中的Geolocate Control来更改/添加属性

时间:2018-07-02 22:24:04

标签: javascript jquery mapbox mapbox-gl-js

一个简单的问题:访问Mapbox GL JS中的Geolocate控件需要什么选择器?

您可以轻松访问所有各种地图控件以添加属性,例如标题标签,可访问性标签(咏叹调标签等),甚至可以启用引导工具提示和数据切换等等。

但是,尽管使用了多种尝试的选择器,但我还是无法通过直接的javascript或jquery访问Geolocate Control。它根本不响应我尝试过的任何事情。

下面是显示情况的jsfiddle。这是添加标题属性的简单情况。我在导航控件上成功显示了它,然后在geolocate控件上显示了失败。

这只是一些明显的选择器错误,还是我缺少的geolocate控件有根本不同?还是这是一个错误? 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 :(得分:0)

仅当浏览器是否支持地理定位的异步响应之后才设置GeolocateControl UI按钮,因此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。我还建议您打开有关标题属性的票证,这听起来像个好主意,应该自动完成。