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 :

Déplacement du marqueur aléatoire


Sujet :

IGN API Géoportail

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 74
    Points
    74
    Par défaut Déplacement du marqueur aléatoire
    Bonjour

    Voici le code de création du marqueur :
    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
    // 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:26, graphicHeight:32, graphicXOffset:-12, graphicYOffset:-32 }
    );
    
    // couche du marqueur
    if (!this.layerGeoportail)
    	this.layerGeoportail = new OpenLayers.Layer.Vector('Marqueur');
    
    this.layerGeoportail.addFeatures([this.marqueurGeoportail]);
    this.carteGeoportail.getMap().addLayer(this.layerGeoportail);
    
    // déplacement du marqueur
    if (!this.dragGeoportail && this.modifiable) {
    
    	this.dragGeoportail = new OpenLayers.Control.DragFeature(this.layerGeoportail);
    	this.carteGeoportail.getMap().addControl(this.dragGeoportail);
    
    	this.dragGeoportail.activate();
    	this.dragGeoportail.onComplete = function (marker, point) {
    
    		var pt = TheCarte.carteGeoportail.getMap().getLonLatFromViewPortPx(point);
    		pt.transform(TheCarte.carteGeoportail.getMap().getProjection(), OpenLayers.Projection.CRS84);
    
    		TheCarte.latitude = pt.lat;
    		TheCarte.longitude = pt.lon;
    		TheCarte.centrerCarte();
    
    		document.getElementById('carteLatitude').setAttribute('value', TheCarte.latitude);
    		document.getElementById('carteLongitude').setAttribute('value', TheCarte.longitude);
    	};
    }
    Le problème est le suivant : lorsque je déplace le marqueur en cliquant en haut à droite de l'image de celui-ci, je ne récupère pas les même coordonnées que si je cliquais en bas à gauche.

    Du coup lorsque je ré-affiche la carte, le marqueur ne se position jamais au même endroit, puisque les coordonnées latitude et longitude ne sont jamais les mêmes :'(.

    Si j'ai bien cerné le problème, il faudrait que je calcul les coordonnées (x et y de la variable point) pour avoir les bonnes.

  2. #2
    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
    Par défaut, l'image du marqueur est est positionnée à la taille d'un ponctuel en X et en Y.
    Par défaut, la taille d'un ponctuel est 6px.
    Tu indiques à OpenLayers une largeur du marqueur de 26px et une hauteur de 32px ET tu déplaces le dessin de -12 en X et -32 en Y, la position finale du marqueur est donc :

    X: abscisse du clic - 12 pixels
    Y: ordonnée du clic - 32 pixels

    A ce X, Y ton picto est dessiné avec une largeur de 26px, hauteur de 32px....

    Regarde le code de l'exemple "Formulaire et API".

Discussions similaires

  1. programme de déplacement aléatoire d' un robot
    Par jeanjakke dans le forum Débuter
    Réponses: 1
    Dernier message: 09/11/2010, 11h53
  2. Déplacement vers un point aléatoire qui change à chaque tour
    Par Lulou40 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 13/10/2009, 12h54
  3. Déplacement aléatoire d'une Image
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/07/2008, 14h27
  4. [FLASH MX2004] Déplacement aléatoire sur un chemin
    Par dorignan dans le forum Flash
    Réponses: 2
    Dernier message: 09/02/2006, 16h17
  5. [FLASH 8] Déplacement aléatoire d'un MovieClip
    Par vieuxshish dans le forum Flash
    Réponses: 3
    Dernier message: 23/12/2005, 14h54

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