banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Fri 24 September 2010 15:52

pako
Juste Inscrit !
Date d'inscription: 18 Jun 2010
Messages: 7

Snapping programmé OpenLayers

Bonjour,
   
    Je galère depuis quelques temps sur un problème de snapping qui je suis sur doit être tout simple.
    J'explique la situation , je travaille sur un projet visant à suivre le trajet de dénneigeuses sur
    un circuit donné j'ai donc une couche camion qui représente la position de la denneigeuse et une couche
    line qui représente le circuit de celle-ci.
   
    J'ai donc créer un snapping comme ceci :
   
    // couche déplacement du camion
    camion = new OpenLayers.Layer.Vector("Camion", {displayInLayerSwitcher: true,styleMap: style_camion, renderers: ["Canvas"]});
    camion.onFeatureInsert=function(feature) {msg(feature.id);};
        
    // couche circuit pour snapping
    line = new OpenLayers.Layer.Vector("Circuit", {
        styleMap: styleMap, renderers: ["Canvas"],
        strategies: [new OpenLayers.Strategy.Fixed()],               
        protocol: new OpenLayers.Protocol.HTTP({
        url: "../examples/data/circuit_hiver.json",
        format: new OpenLayers.Format.GeoJSON()
        })});
   
    //le snapping
    snap_camion = new OpenLayers.Control.Snapping({
                defaults: {tolerance: 25},
                targets: [line],
                greedy: false});
    snap_camion.activate();
    snap_camion.setLayer(camion);
   
    ça fonctionne très bien quand j'ajoute un point manuellement puisque le point
    représentant le camion s'accroche à la ligne mais pas quand je
    crée un point via OpenLayers.Geometry.Point(x,y) avec x et y des coordonnées GPS
    fournies par le GPS du camion (donc petit décalage avec le tracé de la couche line).
    OL place le point à l'endroit spécifié même si normalement il devrait être attiré par la ligne
   
    Je ne vois vraiment pas comment procéder.
   
    Merci de votre aide...

Dernière modification par pako (Fri 24 September 2010 16:45)

Hors ligne

 

#2 Mon 27 September 2010 10:56

pako
Juste Inscrit !
Date d'inscription: 18 Jun 2010
Messages: 7

Re: Snapping programmé OpenLayers

Je pense avoir avancé un peu sur mon problème, j'ai trouvé la fonction testTarget
       qui permet de tester si un point est éligible pour le snapping ou pas et si c'est le cas
       me renvoie un objet avec les coordonnées qui me permettront de placer le point sur ma couche cible.
       Cependant, j'ai toujours un problème car il me renvoie systématiquement null pourtant j'ai testé avec
       des points que si je les crées manuellement sont snappés.
      
       Voici comment j'ai défini ma fonction
       var new_point=snap_camion.testTarget(snap_camion,new OpenLayers.Geometry.Point(X,Y));
      
       Merci d'avance pour votre aide

Dernière modification par pako (Mon 27 September 2010 10:56)

Hors ligne

 

Pied de page des forums

Powered by FluxBB