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

Flex Discussion :

Rafraichissement de l'API Map [Flex3]


Sujet :

Flex

  1. #1
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut Rafraichissement de l'API Map
    Bonjour
    Problème : Petit souci pour réactualiser l'affichage de ma map.

    Situation

    State 1
    Mes adresses sont collectées dans une List.
    La sélection d'un Item génére l'affichage de l'adresse dans le State 2. (Voir .1)
    Et enfin, un bouton de validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:Button click="currentState='State 2';doGeocode(event);" />
    State 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (.1)<mx:TextInput id="localisation" text="{Maliste.selectedItem.geoloc}" enter="doGeocode(event);" />
    - Affichage de ma map.

    Et pour la partie AS3 :

    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
    private function doGeocode(event:Event):void {
          	map.enableScrollWheelZoom();
            map.enableContinuousZoom();
            map.addControl(new ZoomControl());
            map.setZoom(13); 
     
            var geocoder:ClientGeocoder = new ClientGeocoder();
     
                geocoder.addEventListener(
                GeocodingEvent.GEOCODING_SUCCESS,
                function(event:GeocodingEvent):void {
                var placemarks:Array = event.response.placemarks;
                if (placemarks.length > 0) {
                map.setCenter(placemarks[0].point);
                var marker:Marker = new Marker(placemarks[0].point);
     
                marker.addEventListener(MapMouseEvent.CLICK, function (event:MapMouseEvent):void {
                marker.openInfoWindow(new InfoWindowOptions({content: placemarks[0].address}));
                });
                map.addOverlay(marker);
              }
            });
            geocoder.addEventListener(
            GeocodingEvent.GEOCODING_FAILURE,
            function(event:GeocodingEvent):void {
                Alert.show("Adresse introuvable");
                trace(event);
                trace(event.status);
              });
            geocoder.geocode(localisation.text);
          }
    Parfait ! A ce stade, ma map affiche correctement la bonne adresse.

    Mais si je reviens dans ma List pour sélectionner un autre Item, et bien ma map conserve l'affichage du précédent...hum!
    Bon, Ok !, j'ai donc crée un autre bouton pour annuler les variables encore actives soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     private function ferm_map():void {
                	currentState="State 1";
                	Maliste.selectedItem = null;
                	Maliste.selectedItem.geoloc = null;
                	localisation.text = null;
                	}
    Bon évidemment, à ce nouveau stade, ma nouvelle variable est bien enregistrée, mais le plan reste désesperemment affiché sur l'ancienne variable.

    Voilà, je pense avoir fourni un max d'éléments.
    Et si vous avez une idée du truc qui coince, merci à vous.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  2. #2
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Hello,

    Si je comprends bien l'algo que tu as posté, c'est l'objet "map" qui est en charge de t'afficher la carte.
    Par quoi est ce que tu passes pour afficher ta carte ? Y a un composant externe ? un mx.control.image ?
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  3. #3
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par Maskime Voir le message
    Hello,

    Si je comprends bien l'algo que tu as posté, c'est l'objet "map" qui est en charge de t'afficher la carte.
    Par quoi est ce que tu passes pour afficher ta carte ? Y a un composant externe ? un mx.control.image ?
    Salut
    C'est un appel map classique de l'api pour flex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <maps:Map 
        id="map" 
        key="XXXXXXXXX" 
        mapevent_mapready="doGeocode(event)"
        width="100%" height="100%"/>
    Mais rien à voir avec le probléme rencontré.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  4. #4
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Ben sans rapport, je sais pas...

    Compte tenu que tu obtiens toujours l'ancienne carte, je me dis qu'il y a un petit problème de refresh dans ton composant qui affiche l'image et en plus c'est le seul que tu ré-initialise pas dans ta fonction qui repasse tout à null.
    C'est pour ça que j'ai eu cette idée...

    (Quand tu dis l'API Map de Flex, tu fais référence à celle de Google pour Flash ?)
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  5. #5
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Oui, je vois où tu essayes de m'orienter, et en fin de compte il est possible que ce soit la map (en plus des variables) qu'il faut raffraichir.
    Mais alors comment ? ...hum!

    Sinon, pour répondre à ta question, oui, c'est bien celle de google pour Flash/Flex.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  6. #6
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Alors là...

    J'ai envi de te dire : "RTFM" (dans le bon sens du terme hein ?! XD)
    Mais je serai surpris que tu puisse pas faire un truc du genre : map.refresh()
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  7. #7
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par Maskime Voir le message
    Alors là...

    J'ai envi de te dire : "RTFM" (dans le bon sens du terme hein ?! XD)
    Mais je serai surpris que tu puisse pas faire un truc du genre : map.refresh()
    Ben déjà essayé avec :
    map = new Map();
    Même punition.
    Arfff !

    Je vais continuer de fouiner.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  8. #8
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Si tu es dans firefox, et que tu n'as pas firebug, installe le.
    Et regarde dans les appels d'image si par hasard quand tu change tes param il appellerait pas la même image.
    (A supposer qu'il appelle une URL et non qu'il fasse transiter l'image dans un bytearray en AMF)
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  9. #9
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Non, non, ce n'était pas un remarque qui t'était adressée, je n'en prenais qu'à moi-même.
    Je suis franchement désolé si cela a été mal interprété.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  10. #10
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Non je te rassure rien n'a été mal pris

    Par contre est ce que tu sais comment est ce que tu récupère ton image ?
    Parce que si sa ce trouve c'est juste une histoire de cache navigateur qui détecte que l'URL correspond a une image qu'il a déjà en cache et du coup il te la redonne sans se poser de question...
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  11. #11
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    En fait j'ai testé depuis différents navigateurs et j'obtiens le même résultat.
    Mais j'ai une autre piste à explorer.
    Dans le cas présent, le bouton qui lance la "requête" se situe State 1.
    Et l'adresse de l'Item est récupérée dans un TextInput sur State 2, soit la page qui affiche ma map.

    Jusque là, le remplir manuellement ou via une variable ne gêne en rien.

    Mais si je me souviens bien, avant d'avoir apporté ces modifs, le bouton de validation était associé à un TextInput à compléter manuellement ...et ces 2 éléments ( Button +TextInput ) étaient sur la même page active State 2.
    Et si mes souvenirs sont bons, je pouvais à souhait modifier le contenu de ce TextInput, en l'occurence l'adresse et afficher la map actualisée, et sans rien relancer.

    Par déduction, je pense que mon bouton en State 1 ne remplit pas totalement son rôle, en tout cas, situé où il est.
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:Button click="currentState='State 2';doGeocode(event);" />
    Je vais chercher dans cette voie...et donnerai suite.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  12. #12
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    ok ! Pigé pour l'origine, mais je n'ai pas l'explication rationnelle.

    Si je compose de la sorte :

    => Dans State 2 ( soit la page active map)
    Rajouté le bouton suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <mx:Button label="Voir_1" click="doGeocode(event);" />
     
    <mx:TextInput id="localisation" text="{Maliste.selectedItem.geoloc}" enter="doGeocode(event);" />
    Celà fonctionne correctement.
    Mais celà implique de relancer un click à chaque nouvelle adresse.
    Alors que ce n'est pas utile pour le premier Item.
    En tout cas, celà génére un nouvelle vue.

    A l'inverse depuis State 1 :

    => Dans State 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:Button label="Voir_2" click="currentState='State 1';doGeocode(event);" />
    La map n'est pas réactualisée, malgré le changement d'adresse.

    Vous voyez une différence entre les 2 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <mx:Button label="Voir_1" click="doGeocode(event);" />
    et
    <mx:Button label="Voir_2" click="currentState='State 1';doGeocode(event);" />
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  13. #13
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Bon, bien forcé de me rendre à l'évidence, la validation doit se trouver impérativement sur la même page (State) que la map.
    Ce n'est plus utile de chercher plus loin.
    Sacré bouton !

    J'ai voulu testé, et pour le vérifier, j'ai positionné la partition map, directement sous ma List, en l'occurence dans le même State (1).
    Et en effet, chaque selection d'un Item génére une nouvelle vue map.
    Ce qui n'est pas forcemment hestétique pour le moment, mais ô combien pratique.
    Chaque click = Une nouvelle vue.

    .... Et merci à Maskime pour sa participation.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

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

Discussions similaires

  1. [Google Maps] Limite des territoires avec l'api maps 3
    Par ledisciple dans le forum APIs Google
    Réponses: 2
    Dernier message: 11/04/2013, 09h55
  2. [Mappy] Création d'outil Mappy.api.map.tools.Tool
    Par Ares777 dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 02/03/2010, 13h41
  3. API Maps et Punaises perso
    Par jfadeuilhe dans le forum Flex
    Réponses: 1
    Dernier message: 05/02/2010, 17h04
  4. google api map avec kml file
    Par speed034 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/12/2008, 07h57
  5. API Mapping relationnel MySql / C++
    Par zuzuu dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 25/02/2008, 17h04

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