IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

Liste de Recherche : empêcher la sélection autonomatique au survol


Sujet :

IGN API Géoportail

  1. #1
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut Liste de Recherche : empêcher la sélection autonomatique au survol
    Bonjour à tous,

    j'ai un "piti" problème de focus-souris sur la recherche.

    Pour effectuer une recherche de ville dans mon application, j'utilise ce code :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    var tbx5 = viewer.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
    WCoRech = tbx5.id+'_search';
    var B_Recherche = new Geoportal.Control.Panel({
    	div:OpenLayers.Util.getElement(WCoRech)
    });
    ...
    ...
    ...
    //Ajout du contrôle de recherche avec VILLE
    var GeoNames = new Geoportal.Control.LocationUtilityService.GeoNames(
    new Geoportal.Layer.OpenLS.Core.LocationUtilityService(
    	"PositionOfInterest:OPENLS;Geocode",//layer name
    	{
    	  formatOptions: {},
    					styleMap:style_geocoded, //Application du style pour le nom de la ville sélectionnée.
    					marker: "./Images/Recherche2_32x32.png",/* entrer ici l'URL de l'image */
    					radius: 20 // redéfinition de la taille de l'image (optionnel)					
    	}
    ),
    		{
      drawLocation:true,
    //        setZoom: Geoportal.Control.LocationUtilityService.GeoNames.setZoomForBDNyme,
    			uiOptions:{title: 'gpControlLocationUtilityService.GeoNames.title'},
    			setZoom:function(f) 
    			{
    				var z = 11;// Initialisation du ZOOM en cas de résultat positif
    				return z;
    			},
      autoCompleteOptions: {}
    }
    );
     
    nv.addControls([GeoNames]);
    ...
    ...
    ...

    Ca fonctionne très bien... Ou presque : quand on commence à saisir un nom, la liste déroulante s'ouvre automatiquement et si on a la malheur de passer la souris sur cette liste, ça sélectionne le nom survolé, ce qui est une source d'erreur pour nos utilisateurs.

    Pour que ce soit plus clair, voici une petite image de ce que ça donne, sachant que dans cet exemple, j'ai commencé à saisir "Beauvais" :

    Nom : Rech.png
Affichages : 420
Taille : 18,1 Ko

    Est-ce qu'il y aurait donc un moyen pour éviter cela ?
    Zeb'...

  2. #2
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    Il existe une option du contrôle d'autocomplétion qui gère le comportement au survol souris, il s'agit d'une fonction qui s'appelle highlightOver. Par défaut, le survol souris déclenche la transmission de l'élément survolé au contenu de l'input, pour modifier ce comportement on va redéfinir la fonction. Ca se passe au niveau de autoCompleteOptions :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    autoCompleteOptions: {
        highlightOver: function(index) {
            this.highlightIndex= index+1;
            this.highlightProposal(false); // annule la transmission à l'input
        }
    }

    Et le tour est joué.
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  3. #3
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Super, merci beaucoup, c'est exactement ça.
    Zeb'...

  4. #4
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Je relance cette discussion c ar nous venons de nous rendre compte d'un truc bizarre : lorsqu'on ouvre la fenêtre de la ville à rechercher, on commence à saisir le nom de la ville, puis si on descend avec le clavier, ça sélection toujours la ville en dessous de celle qui est en surbrillance.
    Idem avec la souris.

    J'espère que je me fais bien comprendre.
    Par exemple, dans l'image c'est 49250 qui est sélectionné, mais si je clique ou que j'appuie sur le touche entrée, la recherche s'effectuera sur 45190.



    Une idée pour corriger ça ?
    Zeb'...

  5. #5
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Aie, personne n'a la solution ou mon message est passé inaperçu ?
    Zeb'...

  6. #6
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    En supprimant la ligne this.highlightIndex= index+1; ça devrait revenir dans l'ordre
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  7. #7
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Bonjour et désolé d'avoir mis si longtemps à répondre, mais j'étais sur un autre projet...

    Mais bon, ce n'est pas encore ça qu'est ça ; suite à la suppression de cette ligne : à la souris, c'est la bonne ville qui est bien sélectionner dans la liste de présélection de la recherche, mais si j'utilise le clavier (touches fléchées et entrée), c'est toujours la ville située sous celle en surbrillance qui est sélectionnée au moment de l'appui sur la touche "entrée".

    En fait, j'ai refait quelques essais avec ou sans cette fameuse ligne et ça ne change rien au comportement.
    Zeb'...

  8. #8
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Salut tout le monde, je me permet de faire remonter le sujet, car je pense qu'il est passé à la trappe
    Zeb'...

  9. #9
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Citation Envoyé par Zebulon777 Voir le message
    En fait, j'ai refait quelques essais avec ou sans cette fameuse ligne et ça ne change rien au comportement.
    Bonjour,

    Tu peux me certifier que l'ajout/retrait de cette ligne ne change rien ? C'est extrêmement étrange...
    Peux-tu faire un console.log('test') dans ta fonction highlightOver et nous dire si 'test' s'affiche bien dans ta console lorsque tu survoles un résultat ? Histoire d'être sûr que la fonction est bien parcourue.
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  10. #10
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Bonjour, bonjour,

    j'ai enfin eu le temps de faire les tests que tu demandais :

    Sans la ligne
    - A la souris : je commence à taper le nom d'une ville, la liste se déroule, je sélectionne une ville et la recher me positionne bien sur la bonne ville SAUF qu'on ne voit pas les lignes de la liste se mettre en surbrillance au passage de la souris. Le déroulement du programme passe bien dans la fonction "highlightOver".
    - au clavier : je commence à taper le nom d'une ville, la liste se déroule, j'utilise la flèche bas pour me positionner sur une ville, et lorsque j'appuie sur la touche entée, la recherche me positionne sur la ville dont le nom était en-dessous de celle que je voulais sélectionner. Le déroulement du programme NE passe PAS dans la fonction "highlightOver".

    Avec la ligne
    - A la souris : je commence à taper le nom d'une ville, la liste se déroule, je sélectionne une ville et la recher me positionne bien sur la bonne ville, on voit les lignes de la liste se mettre en surbrillance au passage de la souris. Le déroulement du programme passe bien dans la fonction "highlightOver".
    - au clavier : exactement le même comportement.

    Je remets mon code pour que ça soit plus facile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    // Bouton RECHERCHE PAR NOM DE COMMUNES
    if (P_Pltf != "ACCUEIL") // ON DESACTIVE LA RECHERCHE SUR LA PAGE D'ACCUEIL
    {
    	var tbx5 = viewer.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
    	WCoRech = tbx5.id+'_search';
    	var B_Recherche = new Geoportal.Control.Panel({
    		div:OpenLayers.Util.getElement(WCoRech)
    	});
    
    // style pour afficher le nom de la ville sélectionnée 
    	var style_geocoded = new OpenLayers.StyleMap(
    		{
    			"default": new OpenLayers.Style(
    				{
    				externalGraphic : './Images/Recherche2_32x32.png',
    				pointRadius:20,
    				fillText:'black',
    				label:'${labelg}', 
    //      labelBackgroundColor:'black', 
    				fontFamily:'Comic Sans MS',
    				fontSize:'12',
    				fontWeight:'bold',
    				fontColor:'white',
    				labelOutlineColor: "#000000", // Police blanche avec contour noir
    				labelOutlineWidth: 3 // Police blanche avec contour noir
    				}, 
    				{
    					context: {
    							labelg: function(f) 
    							{
    									return f.data.address.places[0].name+', ('+f.data.address.postalCode.name+')';
    							}
    							}
    					}
    			)
    		}
    	);
    //FIN 
    	
      //Ajout du contrôle de recherche avec VILLE
    	var GeoNames = new Geoportal.Control.LocationUtilityService.GeoNames(
    		new Geoportal.Layer.OpenLS.Core.LocationUtilityService(
    			"PositionOfInterest:OPENLS;Geocode",//layer name
    			{
    			  formatOptions: {},
    							styleMap:style_geocoded, //Application du style pour le nom de la ville sélectionnée.
    							marker: "./Images/Recherche2_32x32.png",/* entrer ici l'URL de l'image */
    							radius: 20 // redéfinition de la taille de l'image (optionnel)					
    			}
    		),
    				{
    		  drawLocation:true,
    		//        setZoom: Geoportal.Control.LocationUtilityService.GeoNames.setZoomForBDNyme,
    					uiOptions:{title: 'gpControlLocationUtilityService.GeoNames.title'},
    					setZoom:function(f) 
    					{
    						var z = 11;// Initialisation du ZOOM en cas de résultat positif
    						return z;
    					},
    		  autoCompleteOptions: 
    			{
    		// Permet d'empêcher la sélection automatique d'une ville au survol de la liste de présélections.				
    			highlightOver: function(index) {
    					this.highlightIndex= index+1;
    					this.highlightProposal(false); // annule la transmission à l'input
    					}
    			}
    		}
    	);
    	nv.addControls([GeoNames]);
    	
    	// Application d'un style au bouton
    	WIconeRech = "./Images/Recherche2.png";
    //		var B_RechHTML = document.getElementsByClassName("gpControlLocationUtilityServiceGeocodeItemInactive")[0]; // POUR VILLE, ADRESSE, CP
    	var B_RechHTML = document.getElementsByClassName("gpControlLocationUtilityServiceGeoNamesItemInactive")[0]; // POUR VILLE UNIQUEMENT
    	B_RechHTML.style.background = 'none'; // Permet de ne pas afficher l'image avec le fond de type "bouton"
    	B_RechHTML.style.border = 'none'; // Permet de ne pas afficher l'image avec le fond de type "bouton"
    	B_RechHTML.style.backgroundImage = 'url("'+WIconeRech+'")';
    	B_RechHTML.style.width = "16px";
    	B_RechHTML.style.height = "16px";
    	B_RechHTML.style.position = "absolute";
    	B_RechHTML.style.left = XRech;//"104px";
    	B_RechHTML.style.top = YRech;//"5px";
    	B_RechHTML.style.cursor = "Pointer";
    };
    Zeb'...

  11. #11
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Bon, c'est vrai que ça fait quelques temps que je n'avais plus travaillé sur ce projet, mais j'y reviens et donc je relance la discussion car je n'ai toujours pas réussit à régler ce problème.
    Zeb'...

  12. #12
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Aie, personne ne peut m'aider sur ce bête problème, mais pas si bête ?
    Zeb'...

  13. #13
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Résolu.
    C'était un bug du côté de l'IGN.
    Zeb'...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#2.0]Comment empêcher la sélection dans un DataGridView?
    Par meli0207 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 05/02/2020, 08h41
  2. Liste déroulante recherche formulaire
    Par ivan7 dans le forum Access
    Réponses: 17
    Dernier message: 22/06/2006, 14h37
  3. Liste de recherche d'un sous formulaire
    Par armagued dans le forum Access
    Réponses: 5
    Dernier message: 29/10/2005, 22h00
  4. Empêcher la sélection dans un CEdit
    Par hiko-seijuro dans le forum MFC
    Réponses: 5
    Dernier message: 15/06/2005, 08h47
  5. Empécher la sélection du texte des pages dans un WebBrowser
    Par DevelOpeR13 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 05/06/2003, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo