Más

Cómo obtener las coordenadas de los puntos inicial y final de una línea en una interacción ol. Dibujar en OL3

Cómo obtener las coordenadas de los puntos inicial y final de una línea en una interacción ol. Dibujar en OL3


Estoy usando Openlayers3 para dibujar y almacenar líneas, y luego hago algunos procesos en las entradas. Ahora quiero obtener las coordenadas de los puntos inicial y final de la línea mientras se dibuja la línea. En otras palabras, cuando el usuario hace clic para iniciar la línea, se recopilan las coordenadas del punto de partida y realiza algún proceso. Cuando se inserta el último punto sucede lo mismo. He leído tantas respuestas aquí que se refieren principalmente a OL2 y también leí los documentos de OL3, pero parece que algo no está bien. Aquí es parte de mi código:

draw.on ('drawstart', function (e1) {var mouseCoordinatesStart = map.getEventCoordinate (e1); infoBox.innerHTML = 'acabas de empezar a dibujar en: 
'+ mouseCoordinatesStart;}); draw.on ('drawend', function (e2) {// He intentado el mismo proceso que el drawstart pero los resultados son los mismos. Aquí solo quiero mostrar que probé diferentes métodos. var mousePixel = map.getEventPixel (e2 ); var mouseCoordinatesEnd = map.getCoordinateFromPixel (mousePixel); infoBox.innerHTML = 'dibujo terminado en:
'+ mouseCoordinatesEnd;});

parece que la función para manejar el drawstart funciona por primera vez pero luego el evento drawend no cambia las coordenadas. Sin embargo, si me acerco o alejo, las coordenadas cambian, pero supongo que no son las coordenadas del punto final de la línea. ¿Alguien podría ayudarme con este problema?


¿Por qué no dibuja la entidad y luego saca las coordenadas? Debería ser mucho más rápido.

draw.on ('drawend', function (e2) {var feature = e2.feature; var geometry = feature.getGeometry (); // dependiendo del tipo de geometría dibujada, puede obtener la primera y la última // coordenada. De su descripción Supongo que dibujas una cadena de líneas // puedes aclarar que usando geometry.getType () // entonces para ol.geom.LineString haz lo siguiente. De acuerdo con la documentación // esto debería funcionar para cualquier tipo de geometrías var startCoord = geometry .getFirstCoordinate (); var endCoord = geometry.getLastCoordinate (); // Si no está seguro de cuál es el tipo, o si tiene algún problema // con getFirstCoordinate, getLastCoordinate // puede optar por una técnica más general de coordenadas var = geometry.

Recientemente hice una pregunta similar y Jonatas Walker tuvo la amabilidad de ayudarme con una solución mediante una función geométrica. Creó un violín que adapté un poco, pero esto podría ayudar.