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 :

[Beta4] Marqueur / Positionnement / Drag and Drop


Sujet :

IGN API Géoportail

  1. #1
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut [Beta4] Marqueur / Positionnement / Drag and Drop
    Bonsoir, ou plutôt Bonnuit !

    Je viens poster ici parce que j'ai rien compris à ce que j'ai trouvé sur internet.
    Et aussi parce que je déprime...

    Pour commencer, en pièce jointe à ce sujet, l'application que je développe.
    - L'utilisateur renseigne son adresse, il clique ensuite sur le bouton « Géoportail » ou « Google Map », et la carte s'affiche avec un marqueur situé sur l'adresse qu'il a saisie.
    - Si l'adresse n'est pas trouvée, message d'information... ... ...


    Maintenant passons au niveau des problèmes :

    - Ci-dessous voici comment je place mon marqueur (on peut surement faire mieux). Problème, l'image n'est pas positionnée au bon endroit, elle est centrée par rapport aux coordonnées, au lieu d'être juste au dessus...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // positionnement du marqueur
    var position = new OpenLayers.Geometry.Point(this.longitude, this.latitude);
    position.transform(OpenLayers.Projection.CRS84, this.carteGeoportail.projection);
    
    // création du marqueur
    this.marqueurGeoportail = new OpenLayers.Feature.Vector(
           position, null, { externalGraphic:IMAGE_MARQUEUR, graphicWidth:20, graphicHeight:34 }
    );
    
    // couche du marqueur
    var couche = new OpenLayers.Layer.Vector('Marqueur');
    couche.addFeatures([this.marqueurGeoportail]);
    this.carteGeoportail.getMap().addLayer(couche);
    - Ensuite, si l'utilisateur à la mauvaise idée de changer l'adresse qu'il a saisie, ou lorsque l'utilisateur change le marqueur de place sur la carte Google et qu'il revient sur la carte Géoportail, il faut déplacer le marqueur.
    Autant j'arrive à placer un marqueur, autant je suis incapable de le déplacer après. J'ai essayé le code suivant, mais non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // positionnement du marqueur
    var position = new OpenLayers.Geometry.Point(this.longitude, this.latitude);
    position.transform(OpenLayers.Projection.CRS84, this.carteGeoportail.projection);
    
    // recentre le marqueur
    this.marqueurGeoportail.geometry = new OpenLayers.Geometry().move = position;
    - Et si maintenant, je veux déplacer mon marqueur... Comment qu'on fait ?
    Dans la doc j'ai vu DragFeature, mais un « alert(OpenLayers.Control.DragFeature); » me donne undefined, donc bon.

    - Est-il possible de demander au Géoportail les coordonnées d'une adresse ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut Des débuts de réponse
    Pour le centrage, c'est facile:
    - en plus d'externalGraphic, il faut jouer sur graphicXOffset et graphicYOffset
    Souvent en décalant de -1/2 largeur et -1/2 hauteur on obtient le résultat escompté.

    Pour pouvoir déplacer un marqueur, il faut:
    - ajouter le contrôle OpenLayers.Control.DragFeature à la couche de marqueurs
    - ajouter une icône dans la barre d'outils pour activer ce contrôle
    J'ai des pages où je fais des essais avec mise en oeuvre du déplacement:
    - http://atlasnw.free.fr/geoportail/ex...gpx_edite.html
    - http://atlasnw.free.fr/geoportail/ex.../gpx_edit.html
    - http://atlasnw.free.fr/geoportail/ex...essin_kml.html
    Le code nécessaire est assez important.

    Pour changer la position d'un marqueur, la solution simpliste est de le supprimer(destroyFeatures([feature]); ) puis de le re-créer!

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par luigifab Voir le message
    - Est-il possible de demander au Géoportail les coordonnées d'une adresse ?
    A partir de la 1.0, ce sera en production... avant la fin du mois

    Tu peux faire des tests (au moins du code, pas des appels) avec la 1.0bêta5...

  4. #4
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    Okay ^^

    en plus d'externalGraphic, il faut jouer sur graphicXOffset et graphicYOffset
    Effectivement

    Pour changer la position d'un marqueur, la solution simpliste est de le supprimer(destroyFeatures([feature])
    Parfait, même s'il ma fallu 1/2 heure pour comprendre comment utiliser la méthode.

    Pour pouvoir déplacer un marqueur, il faut:
    - ajouter le contrôle OpenLayers.Control.DragFeature à la couche de marqueurs
    - ajouter une icône dans la barre d'outils pour activer ce contrôle
    Alors là c'est la catastrophe !
    Si je fais un « new OpenLayers.Control.DragFeature() », j'ai le droit à un « OpenLayers.Control.DragFeature is not a constructor »... :'(

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par luigifab Voir le message
    Alors là c'est la catastrophe !
    Si je fais un « new OpenLayers.Control.DragFeature() », j'ai le droit à un « OpenLayers.Control.DragFeature is not a constructor »... :'(
    Es-tu bien en API étendue ? "v=1.0beta4-e" par exemple.

  6. #6
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    Ha ben oué ben non, forcément ça aide pas...
    Voyons la suite.

  7. #7
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    Merci pour votre aide, sans vous, je n'aurais pas encore réussi !
    Comme sa peut toujours servir, en pièce jointe mon fichier JavaScript, et la démo sur mon site web : http://www.luigifab.info/apijs/carte.htm

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par luigifab Voir le message
    Merci pour votre aide, sans vous, je n'aurais pas encore réussi !
    Comme sa peut toujours servir, en pièce jointe mon fichier JavaScript, et la démo sur mon site web : http://www.luigifab.info/apijs/carte.htm
    C'est nickel
    Une petite contribution pour la galerie (Cf. ) ?

  9. #9
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    On peut chipoter un peu?
    Je rentre mon code postal 43520 et le nom de ma commune Mazet... Cela m'ouvre bien la carte mais le marqueur n'est pas placé au centre du village?
    Sinon, bel effort!

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut Top le code
    Bravo pour la lisibilité du code!
    Il y a même des majuscules accentuées, tu fais comment? (j'ai plus le courage en copier/coller).

  11. #11
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    @cmail : le problème vient des coordonnées fournies par Google.

    @mga_geo : justement en corrigeant les erreurs qui trainent (avec jslint), je me demandai si c'était compréhensible, par quelqu'un d'autre que moi...
    Pour les majuscules accentuées, Linux.

  12. #12
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    Je sais pas trop si ça vient de mon code, mais j'ai un problème avec Opera 10.50.
    Voir la capture d'écran pour le détails des erreurs.

    C'est connu, ou c'est moi qui fait n'importe quoi ?

  13. #13
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par luigifab Voir le message
    C'est connu, ou c'est moi qui fait n'importe quoi ?
    Avec la 1.0bêta4 Opera 9.6x posait de gros problème ...
    Avec la 1.0bêta5 Opera 10.x ne pose qu'un seul problème (bug rapporté à OpenLayers)... (enfin, jusqu'ici pas d'autres remontés)

    Je regarderai, vu qu'il y a la pile d'appels, mais cela ne me semble pas incongru avec la 1.0bêta4

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

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. Drag and drop et positionnement
    Par Tendhor57 dans le forum jQuery
    Réponses: 1
    Dernier message: 30/10/2013, 07h55
  3. [VB.NET] Microsoft TreeView drag and drop ?
    Par bigtoof dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/05/2004, 14h50
  4. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  5. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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