Créer la légende de la carte pour correspondre à OpenLayers.Style
J'ai créé un OpenLayers.De Style que les couleurs de mes polygones, un style qui les tailles de mes points et tout ce jazz, maintenant, je veux expliquer à l'utilisateur ce que ces styles représentent.
Je ne peux pas voir quoi que ce soit dans OpenLayers qui me permet de dessiner mon propre légende à l'aide de ces styles. Tout semble me diriger vers l'hypothèse d'un serveur de carte qui m'envoie des données, je n'en ai pas.
Au moment où il regarde comme je vais avoir le tirage de l'échantillon de points ou de zones et de capture d'écran pour faire mon propre légende. Est-il une meilleure façon de le faire en utilisant directement le Style, donc je n'ai pas à régénérer les images lorsque le Style est changé?
Mise à jour
J'ai eu une bonne réponse qui s'appuie sur GeoExt (et donc ExtJS), je voudrais encore entendre si quelqu'un a un jQuery compatible réponse. Surtout si elle est en Javascript et OpenLayers.
LegendPanel
qui, je pense, fait exactement ce que vous voulez.OriginalL'auteur Craig | 2011-03-11
Vous devez vous connecter pour publier un commentaire.
En fait, OpenLayers ne prend pas en charge ce que vous voulez (ou au moins, je ne sais pas comment faire). Comme Chau dit, LegendPanel de GeoExt est votre seul espoir.
Liens intéressants:
http://geoext.org/lib/GeoExt/widgets/LegendPanel.html
http://www.mail-archive.com/[email protected]/msg01318.html
OriginalL'auteur Fran Verona
J'ai pu résoudre mon légende besoins à l'aide de l'ol.Carte de classe comme un conteneur pour les symboles. Peut-être un peu un hack, mais semble fonctionner pour la plupart (?) les couches vectorielles (je n'ai pas WMS).
Donc ce que je fais, c'est:
boucle à travers les couches de la carte et de choisir le type de vecteur avec
if(lyr instanceof ol.layer.Vector)
vérifier quel type de style est utilisée et les stocker dans un tableau
également stocker le type de géométrie
boucle à travers le stockés à-être la légende de lignes et de construire les éléments HTML nécessaire, généralement un div pour le "mini-carte" et le nom de la couche
une fois les éléments HTML ont été ajoutés à la page, lancer les cartes et insérez le faux fonctionnalités pour afficher les symboles
Avec cela, j'ai été en mesure de créer et de mettre à jour une part de mythe dialogue (jQuery UI):
Je n'ai pas testé beaucoup de choses encore, il peut y avoir quelques problèmes avec cette approche...
OriginalL'auteur Samuli Neuvonen
Comme une option, vous pouvez créer des éléments SVG avec les mêmes attributs comme dans OL3 style. Voici l'exemple pour le cercle de style (vous auriez besoin des méthodes similaires également les autres types):
Depuis SVG manipulation avec jQuery est un peu différent de d'éléments HTML, je suis de la conversion de l'objet string en retour. Les détails peuvent être trouvés à partir de jquery ajouter de ne pas travailler avec un élément svg?
Plus tard, vous pouvez coller la légende de l'icône au format HTML avec
OriginalL'auteur user1702401
Le plus proche que vous pouvez obtenir ce que vous voulez avec la plaine OpenLayers est si vous utilisez le service WMS au lieu de WFS ou quelle que soit la méthode que vous utilisez pour l'extraction de caractéristiques. WMS est le type de la requête GetLegendGraphic qui, comme le nom l'indique, vous permet de récupérer dynamiquement une image qui montre ce style est appliqué à la couche.
bien,envoyez-lui un patch pour ça 🙂
OriginalL'auteur igorti