0
votes

leafletjs - émuler / déclencher un clic sur 'mymap'

, espérons-le, facile!

Après l'envoi d'un formulaire, je souhaite émuler un événement de clic sur:

  1. Couche de carte: 'layerWardDev'
  2. Coordonnées: "51 .507, -0.127 "
  3. Pour la carte: 'mymap'

J'ai actuellement le code suivant qui renvoie un objet:

layerWardDev.fire ('clic', {lat: 51.507, lng: -0.127})

Cependant, le clic ne fonctionne pas / déclenche le popup / divers autres écouteurs d'événements qui en dépendent. Est-ce que je rate quelque chose de simple? Merci!


2 commentaires

Ces écouteurs d'événements devraient écouter sur l'objet mymap , pas sur votre couche. mymap.fire ('click', ...) fonctionne-t-il?


@Kvothe merci pour la réponse, mais malheureusement non, cela ne fonctionne pas non plus


3 Réponses :


0
votes

Les données d'un événement de clic doivent être un MouseEvent - donc

layerWardDev.fire('click',{ latlng: ([51.507, -0.127])});

doit le faire.


0 commentaires

0
votes

Cela dépend vraiment des couches que vous souhaitez utiliser (quelles fenêtres contextuelles).

Hypothèse 1: nous avons des marqueurs A en haut de notre MapDev

Ce que nous pouvons faire est de: sélectionner le marqueur par son identifiant (exemple A [i]), A [i] .fire ('clic'); et la fenêtre contextuelle est déjà définie pour l'événement de clic.

Hypothèse 2: la fenêtre contextuelle est directement en haut de la carte nous pouvons ouvrir une fenêtre contextuelle directement sans émuler l'événement de clic:

  L.popup()
    .setLatLng([51.507, -0.127])
    .setContent('Test')
    .openOn(mymap);
    


1 commentaires

Merci, le problème est que l'événement de clic déclenche d'autres écouteurs d'événements qui peuplent d'autres parties des données si malheureusement bien que cela créerait une fenêtre contextuelle, ce sont en fait les autres écouteurs d'événements pour remplir un tableau de bord que j'essaie de déclencher (basé sur cet événement de clic)



0
votes

Malheureusement, ce n'est pas une solution exacte ... J'ai parcouru chaque calque avec .eachLayer () et cliqué sur la carte manuellement pour chacun.

L'autre chose que j'ai décidé d'utiliser à la place est le .featureGroup qui, je pense, fournit une fonctionnalité plus riche que layerGroups


0 commentaires