Suite

Obtenir le centre de géométrie dans OpenLayers 3


Donné unGéométrieobjet dans OpenLayers 3. Comment s'y prendrait-on pour obtenir son centre ?

Les anciennes versions d'OpenLayers fournissaient unobtenirCentroidméthode. Il y avait aussi ungetBoundssolution de contournement. Mais ceux-ci semblent être supprimés dans OpenLayers 3.


Une solution de contournement, mais vous pouvez utiliser legetExtentsur 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 de 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, basé sur le mètre), mais plus difficile dans d'autres (EPSG:4326, basé sur les coordonnées lon/lat). Une fonction qui pourrait calculer ce centre (dans EPSG:3857) serait la suivante ;

function getCenterOfExtent(Etendue){ var X = Etendue[0] + (Etendue[2]-Etendue[0])/2 ; var Y = étendue[1] + (étendue[3]-étendue[1])/2 ; renvoie [X, Y] ; }

J'espère que cela t'aides!


Vous pouvez obtenir son centre d'extension en utilisant ol.extent.getCenter. Dans mon cas, j'ai une couche vectorielle 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

var select = new ol.interaction.Select(); map.addInteraction(sélectionner);

A chaque clic…

select.on('select', function(e) {

Obtenez la première fonctionnalité sélectionnée, à partir du tableau "sélectionné". Ensuite, obtenez sa géométrie, puis son étendue.

Utilisez cette étendue pour trouver son centre, en utilisantol.extent.getCenter

var aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa); console.log("Le centre est : "+oo); // voila!!!! });

Le même code fonctionnait pour les lignes, les points et les polygones.

PS. Leol.extent.getCenterest stable, utilisé dans OL version 3.9.0 et version 3.10.1 et pouvez-vous le trouver ici


Vous pouvez également obtenir le centre avec :

var center = e.feature.getGeometry().getCenter();

OpenLayers v 6.1.1

var center = e.feature.getGeometry().getExtent().getCenter()


Voir la vidéo: Angular-Openlayers Part 3: Working with custom markers (Octobre 2021).