Suite

Comment obtenir les coordonnées des points de départ et d'arrivée d'une ligne dans ol.interaction.Draw dans OL3

Comment obtenir les coordonnées des points de départ et d'arrivée d'une ligne dans ol.interaction.Draw dans OL3


J'utilise Openlayers3 pour dessiner et stocker des lignes, puis effectuer certains processus sur les entrées. Maintenant, je veux obtenir les coordonnées des points de départ et d'arrivée de la ligne pendant le tracé de la ligne. En d'autres termes, lorsque l'utilisateur clique pour démarrer la ligne, les coordonnées du point de départ sont collectées et effectuent un processus. Lorsque le dernier point est inséré, la même chose se produit. J'ai lu tellement de réponses ici se référant principalement à OL2 et j'ai également lu les documents OL3, mais il semble que quelque chose ne va pas. Voici une partie de mon code :

draw.on('drawstart', function(e1) { var mouseCoordinatesStart=map.getEventCoordinate(e1); infoBox.innerHTML = 'vous venez de commencer à dessiner à : 
' + mouseCoordinatesStart;}); draw.on('drawend', function(e2) {//J'ai essayé le même processus que le drawstart mais les résultats sont les mêmes. ici, je veux juste montrer que j'ai essayé différentes méthodes. var mousePixel= map.getEventPixel(e2 ); var mouseCoordinatesEnd=map.getCoordinateFromPixel(mousePixel); infoBox.innerHTML = 'le dessin s'est terminé à :
'+ mouseCoordinatesEnd;});

il semble que la fonction de gestion du drawstart fonctionne pour la première fois mais ensuite l'événement drawend ne change pas les coordonnées. Cependant, si je fais un zoom arrière ou avant, les coordonnées changent, mais je suppose que ce ne sont pas les coordonnées de l'extrémité de la ligne. Quelqu'un pourrait-il m'aider avec ce problème?


pourquoi ne pas dessiner l'entité et ensuite en extraire les coordonnées. Cela devrait être beaucoup plus rapide.

draw.on('drawend', function(e2) { var feature = e2.feature; var geometry = feature.getGeometry(); //selon le type de géométrie dessinée, vous pouvez obtenir la première et la dernière //coordonnée. De votre description Je suppose que vous dessinez une chaîne de lignes // vous pouvez préciser qu'en utilisant geometry.getType() // donc pour ol.geom.LineString, procédez comme suit. Selon la // documentation, cela devrait fonctionner pour tout type de géométrie var startCoord = geometry .getFirstCoordinate (); var endCoord = geometry.getLastCoordinate (); // Si vous n'êtes pas sûr du type ou si vous rencontrez des problèmes // avec getFirstCoordinate, getLastCoordinate // vous pouvez opter pour une technique plus générale des coordonnées var = geometry.getCoordinates(); // puis analyser l'objet de coordonnées pour obtenir le premier et le dernier var startCoord = coordinates[0]; var endCoord = coordinates[coordinates.length-1]; });

J'ai posé une question similaire récemment et Jonatas Walker a eu la gentillesse de m'aider avec une solution au moyen d'une fonction de géométrie. Il a créé un violon que j'ai légèrement adapté mais cela pourrait aider