#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