Es una solución alternativa, pero puede usar el getExtent
método en la geometría para establecer la extensión en el mapa. Supongo que el centro de la vista será el centro de la geometría;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
Si no desea cambiar la vista (que puedo imaginar), puede pensar en una función para calcular el centro de la extensión. Esto será fácil en ciertos tipos de sistemas de coordenadas (EPSG: 3857, que está basado en medidores), pero más difícil en otros (EPSG: 4326, basado en cables lon / lat). Una función que podría calcular este centro (en EPSG: 3857) sería la siguiente;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
¡Espero que esto ayude!
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;
getCenterOfExtent
ol.extent.getCenter
y es estable. Por ejemplo, lo hicevar aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
y me dio el centro de puntos, líneas y polígonos. Échale un vistazo aquíPuede obtener su extensión centro utilizando
ol.extent.getCenter
. En mi caso, tengo una capa vectorial y quiero obtener el centro de una entidad después de hacer clic en ella.Entonces
crear una interacción de clic simple y agregarla al mapa
Por cada clic ...
Obtenga la primera característica seleccionada, de la matriz "seleccionada". Luego obtenga su geometría, y luego su extensión.
Use esa extensión para encontrar su centro, usando
ol.extent.getCenter
El mismo código funcionó para líneas, puntos y polígonos.
PD. El
ol.extent.getCenter
es estable, se usa en la versión OL 3.9.0 y la versión 3.10.1 y puede encontrarlo aquífuente
También puede obtener el centro con:
fuente
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.getCenter()
método solo es aplicable a las geometrías circularesol.geom.Circle
. ¿Es posible que tenga un tipo diferente de geometría?OpenLayers v 6.1.1
var center = e.feature.getGeometry().getExtent().getCenter()
fuente