Suite

Obtenir la couche actuelle dans l'événement de contrôle de Leaflet ?

Obtenir la couche actuelle dans l'événement de contrôle de Leaflet ?


Puis-je obtenir la couche actuelle dans l'événement de contrôle ?

if (obj.overlay) { input = document.createElement('input'); input.type = 'case à cocher'; input.defaultChecked = vérifié ; } else { input = this._createRadioElement('leaflet', coché); } L.DomEvent.on(input, 'click', this._onInputClick, this); _onInputClick:function(e){ var id =e. Cible actuelle ; }

Lorsque l'utilisateur clique sur la case à cocher, cela déclenchera l'événement _onInputClick. Ce champ sera créé sous un calque feuillet. Je veux obtenir le calque actuel. Par exemple, je peux obtenir le contrôle actuel comme e.currentTarget. Est-il possible d'obtenir la couche actuelle par la bibliothèque Leaflet ?


Je suppose que vous construisez un Leaflet Control basé sur L.Contrôle.Calques?

Dans ce cas, vous pouvez simplement continuer à utiliser un schéma similaire à celui de L.Control.Layers pour stocker puis récupérer une référence au calque correspondant.

L.Control.Layers ne stocke que le dépliant_id du calque en tant que propriété de l'élément d'entrée : input.layerId = L.stamp(obj.layer);

Toutes les couches connues par le contrôle des couches (c'est-à-dire ajoutées à l'instanciation ou ultérieurement paraddBaseLayerou alorsajouterSuperposition) sont référencés dansthis._layersobjet.

Lors d'un événement de clic d'entrée, le contrôle des couches parcourt toutes les entrées et récupère la ou les couches correspondantes : obj = this._layers[input.layerId];

Donc, dans votre cas, si vous utilisez le même schéma, stockez la référence à toutes les couches d'intérêt dansthis._layers, attachez l'identifiant auquel l'entrée fait référence avecinput.layerId = L.stamp(calque), puis récupérez-le si nécessaire en lisant cet identifiant et en obtenant la référence correspondante :

_onInputClick : fonction (événement){ var id = event.currentTarget.layerId ; var layer = this._layers[id]; }

C'est un vieux fil… mais j'ai trouvé une bonne réponse à un problème similaire ici : https://stackoverflow.com/questions/33740996/how-to-get-the-baselayer-selected-in-leaflet

Ma situation concernait les couches de base, mais les crochets sont là pour tracer des événements pour ajouter une superposition (overlayadd) ou supprimer une superposition (overlayremove). Voir ici : https://leafletjs.com/reference-1.6.0.html#map-overlayadd

Voici mon code de travail qui renvoie le layer_id du contrôle de couche lorsqu'un événement de changement de couche de base se produit. En utilisant ce layer_id, je peux déterminer quelle couche de base est actuellement activée :

map.on('baselayerchange', fonction (e) { currentLayerID = e.layer._leaflet_id; console.log(currentLayerID); });

Voir la vidéo: Create interactive web maps using Leaflet JS - 06 - Plugins and Google Maps Layer