Más

Cómo obtener el ángulo de rotación de una función existente en OpenLayers 3

Cómo obtener el ángulo de rotación de una función existente en OpenLayers 3


Creé dos controles externos para mi mapa OpenLayers 3: Girar a la izquierda y Girar a la derecha. Ya guardé la última función arrastrada / clicada en un global variable, sin embargo, estoy luchando por recuperar la rotación real de la función para "sumarle" o "restarle" grados.

Así es como se ve el código de mi botón "Girar a la derecha":

var evt = lastEvent; if (evt == "") {devolver falso; } else {var coordX = evt.coordinate [0]; var coordY = evt.coordinate [1]; var feature = map.forEachFeatureAtPixel (evt.pixel, function (feature, layer) {return feature;}); var layer = map.forEachFeatureAtPixel (evt.pixel, function (feature, layer) {return layer;}); // Aquí es donde necesito obtener el valor de rotación de la función. var rotación = Math.random () * 10 + 1; var origen = nuevo ol.geom.Point (coordX, coordY); feature.setStyle (new ol.style.Style ({image: new ol.style.Icon (/ ** @type {olx.style.IconOptions} * / ({anchor: [0.5, 0.5], rotación: rotación, anchorXUnits : 'fracción', anchorYUnits: 'fracción', src: 'https://cdn4.iconfinder.com/data/icons/pictype-free-vector-icons/16/home-128.png"> Documentación de API y ejemplos pero parece que no puedo encontrar una manera de acceder al valor de rotación de la función una vez que ya está dibujado en la capa.


No sé si la razón por la que no pudo encontrar nada en la documentación fue porque no dejó de hacer clic en "Solo estable" en la esquina superior derecha de la documentación de la API.

Prueba esto:

var _feature; // su característica var _style = _feature.getStyle (); var _imagestyle = _style.getImage (); var rotación = _imagestyle.getRotation ();

No lo he probado, pero pruébalo.


Encontré una forma alternativa para aquellos que no quieren correr. código inestable.

Dado que es posible almacenar los datos que queramos en la función (es decir: elnombrepropiedad), ¿por qué no agregar el valor de rotación como una propiedad también? Esto funcionó para mí:

Inicialización de objeto

/ * Cuando cree el objeto ol.Feature, agregue algunas propiedades para almacenar la rotación. var iconFeature = new ol.Feature ({geometry: new ol.geom.Point ([400, 500]), nombre: 'Casa 1', número de lote: 54872142, valor de rotación: 0, / * Este de aquí * / valor de opacidad: 0.5 / * Agregué este también, entiendes la idea * /});

Modificación de valor

var feature = map.forEachFeatureAtPixel (evt.pixel, function (feature, layer) {return feature;}); var layer = map.forEachFeatureAtPixel (evt.pixel, function (feature, layer) {return layer;}); / * La magia sucede aquí * / var rotación = característica ['o'] ['valor de rotación'] + 0.1; var origen = nuevo ol.geom.Point (coordX, coordY); var opacity = feature ['o'] ['opacityValue']; característica ['o'] ['valor de rotación'] = rotación; feature.setStyle (new ol.style.Style ({image: new ol.style.Icon (/ ** @type {olx.style.IconOptions} * / ({ancla: [0.5, 0.5], rotación: rotación, opacidad : opacidad, anchorXUnits: 'fracción', anchorYUnits: 'fracción', src: 'https://cdn4.iconfinder.com/data/icons/pictype-free-vector-icons/16/home-128.png ">Mejora esta respuestarespondido 16/01/15 a las 16:45Jeff NoelJeff Noel2171 insignia de oro3 insignias de plata10 insignias de bronce
							

Ver el vídeo: Determinación del ángulo de rotación. Khan Academy en Español