mapbox gl js событие клика на слое - PullRequest
0 голосов
/ 04 июля 2018

В настоящее время я работаю над интерактивной картой, используя Mapbox GL JS. Я хотел вызвать определенную функцию, когда пользователь нажимает на слой, поэтому я добавил что-то вроде :

map.on('click', function(e) {.....});

, а также:

map.on('click', 'layername', function(e) {.....});

До последнего обновления Mapbox GL JS все работало нормально. Но теперь, это работает .... иногда, но не всегда (с периодами, как один день на два). Я видел примеры прослушивателей событий щелчка ( Mapbox GL JS: игнорировать событие щелчка на карте, если щелкнул маркер ), но я этого не использую. Но это для маркеров; Как заставить это работать для слоев или всей карты?
Заранее спасибо!

PS: Есть где-нибудь полный список того, что нужно изменить, чтобы приспособиться к новой версии? Потому что это не единственная моя проблема ...
PS2: обратите внимание, что "mouseenter" и "mouseleave" работают отлично, иногда.

Редактировать: вот кусок кода:

mapboxgl.accessToken = 'pk.eyJ1IjoiY2xlbWFwYm94IiwiYSI6ImNqOHVsbjdpdDBxM2wyd3JwcnVjZGtsZmsifQ.cv3w8BmCJAy0f0YF1ZFSTA';
var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/clemapbox/cjj5g2pge0huj2sntqmafju85',
});

map.on('click', function (e) {
    console.log("click on map");
});

map.on('click', 'RER stops', function(e){
	console.log("click on RER stop");
});

map.on('mouseenter', 'RER stops', function () {
    map.getCanvas().style.cursor = 'pointer';
});

map.on('mouseleave', 'RER stops', function () {
    map.getCanvas().style.cursor = '';
});
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.45.0/mapbox-gl.js'></script>
        <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.45.0/mapbox-gl.css' rel='stylesheet' />
        <title>TEST click event</title>
    </head>
    <body>
        <section id='map' style="width:100%;height:500px"></section>
        <script src="TEST.js"></script>
    </body>
</html>

Примечание: «RER stop» - это слой с сине-белыми раундами «RER» при увеличении.

1 Ответ

0 голосов
/ 15 апреля 2019

Переход на MapBox GL JS версии 0.48 решил эту проблему для меня!

...