Un peu d'une solution de contournement, mais vous pouvez utiliser la getExtent
méthode sur la géométrie pour définir l'étendue sur la carte. Je suppose que le centre de la vue sera alors le centre de la géométrie;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
Si vous ne voulez pas changer la vue (ce que je peux imaginer), vous pouvez penser à une fonction pour calculer le centre de l'étendue. Ce sera facile dans certains types de systèmes de coordonnées (EPSG: 3857, qui est basé sur le mètre), mais plus difficile dans d'autres (EPSG: 4326, basé sur les cordons lon / lat). Une fonction qui pourrait calculer ce centre (dans EPSG: 3857) serait la suivante;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
J'espère que cela t'aides!
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;
getCenterOfExtent
ol.extent.getCenter
et son stable. Par exemple, je l'ai faitvar aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
et m'a donné le centre des points, des lignes et des polygones. Découvrez-le iciVous pouvez obtenir son centre d'étendue à l'aide de
ol.extent.getCenter
. Dans mon cas, j'ai un calque vectoriel et je veux obtenir le centre d'une entité après avoir cliqué dessus.Alors
créer une interaction de clic simple et l'ajouter à la carte
Pour chaque clic ...
Obtenez la première fonctionnalité sélectionnée, à partir du tableau "sélectionné". Obtenez ensuite sa géométrie, puis son étendue.
Utilisez cette étendue pour trouver son centre, en utilisant
ol.extent.getCenter
Le même code a fonctionné pour les lignes, les points et les polygones.
PS. Le
ol.extent.getCenter
est stable, utilisé dans OL version 3.9.0 et version 3.10.1 et pouvez-vous le trouver icila source
Vous pouvez également obtenir le centre avec:
la source
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.getCenter()
méthode n'est applicable qu'aux géométries de cercleol.geom.Circle
. Est-il possible que vous ayez un type de géométrie différent?OpenLayers v 6.1.1
var center = e.feature.getGeometry().getExtent().getCenter()
la source