Une autre journée travaillant avec des openlouches et un autre problème. p>
nommément - j'ai plusieurs couches vectorielles les unes sur les autres pour différents types de choses (voitures, voyages de l'histoire et des zones). Ils ont tous des événements que j'essaie d'attraper ... mais comme Niklas découvert, lorsque vous activez les événements sur un Couche, il est déplacé sur le dessus et des événements sur les couches ci-dessous. P>
Y a-t-il un moyen de contourner cela? Parce que lorsque je déplace sur la zone polygone, je souhaite une édition et afficher son nom et quand je déplace la souris sur le marqueur de voiture, je veux aussi le feu de l'événement. Et non - je ne veux pas les mettre sur la même couche, car je souhaite qu'il soit possible de les éteindre ou de ne pas boucler à travers toutes les caractéristiques et de les désactiver chacun. P>
alan p>
Edit1: J'ai fait des recherches et découvertes, que vous pouvez utiliser le même contrôle sur plusieurs couches. Cela pourrait probablement résoudre ce problème pour moi. Je vérifie le guichet automatique et les tests si l'ajout de plus de couches à un seul contrôle est une solution à mon problème ou non. P>
4 Réponses :
Je suis honoré d'être mentionné comme ça! : -)
J'ai fini par remplacer la fonction d'activation dans le gestionnaire de fonctionnalités dans un fichier JS supplémentaire: (la ligne commentée est la seule différence.) P>
OpenLayers.Handler.Feature.prototype.activate = function() { var activated = false; if (OpenLayers.Handler.prototype.activate.apply(this, arguments)) { //this.moveLayerToTop(); this.map.events.on({ "removelayer": this.handleMapEvents, "changelayer": this.handleMapEvents, scope: this }); activated = true; } return activated; };
Mmm ouais ... ça ne fera pas le tour pour moi, j'ai peur. Je suis toujours en train de regarder en utilisant le même contrôle de sélection sur plusieurs couches. Il semble prometteur. Je posterai la solution si et quand j'ai fini: p
Vous pouvez vérifier maintenant :). En fait .. Travailler avec OpenLayers n'est pas difficile ... Trouver la bonne façon de faire les choses est H a R D!
Well Heres la solution:
A l'air impressionnant! Quel type d'objet est openmap?
Juste un objet Blob pour la gestion de tout i (ou de tout visiteur) faire sur la page Carte. Et dans cette méthode, je lie maintenant l'événement aux fonctionnalités. Dans la méthode suivante, je lie différents événements JQuery à différents éléments DOM. Et puis il y a une méthode qui est wrapper pour JQuery.ajax, de sorte que tous les appels AJAX passeront par une méthode qui a du succès et des rappels d'erreur comme paramètres .. et ainsi de suite. Fondamentalement, je pensais que c'est mieux pour créer un gros objet plutôt que de créer des tas de fonctions entières, qui reçoivent tous la carte comme un paramètre.
En fait ... après avoir écrit cette méthode, j'ai dû la mettre à jour. Mais, les changements étaient spécifiques à mon cas .. Pour tous les autres, qui a besoin de résoudre le même problème, cet exemple devrait être suffisant :)
Ceci résolve mon problème:
avant: strong> p> après: strong> p> layer.events.register("loadend", layer, function(){
$("#progress").hide();
});
map.addLayer(layer);
J'ai trouvé cela lorsque j'avais le même problème, essayant de réagir à plusieurs couches à réagir aux événements de la souris.
La solution, juste au cas où quelqu'un d'autre trouve ce fil est beaucoup plus simple. P>
Le SelectFeature Control prend une gamme de couches vectorielles et si tous les retardateurs que vous devez réagir aux événements de la souris (Hover et clic) sont dans ce tableau, ils fonctionnent tous, pas seulement celui qui a été déplacé vers le haut. P> < p> Donc, dans la solution approuvée à ce fil, cela peut être très simplifié en faisant cela: p> Cela enregistrera les événements appropriés sur les deux couches et les rendre à la fois en direct. . P> J'espère que cela aidera quelqu'un d'autre qui sort de cette question. P> Comme dit ailleurs, utiliser OpenLayers n'est pas difficile, trouvant la bonne façon de faire les choses avec elle est. P > p>
+1 - Solution simple et efficace. Voir aussi list.osgeo.org/pipetermail/openlayers-utilisateurs // 2012-janvier / ...