Mais

Obtenha o Centro de Geometria no OpenLayers 3

Obtenha o Centro de Geometria no OpenLayers 3


Dado umGeometriaobjeto em OpenLayers 3. Como alguém faria para obter seu centro?

Versões mais antigas do OpenLayers forneciam umgetCentroidmétodo. Também havia umgetBoundsGambiarra. Mas eles parecem ter sido removidos no OpenLayers 3.


É uma solução alternativa, mas você pode usar ogetExtentmétodo na geometria para definir a extensão no mapa. Presumo que o centro da vista será o centro da geometria;

Teste = novo ol.geom.Geometry (); map.getView (). fitExtent (Test.getExtent, map.getSize ()); var CenterOfGeom = map.getView (). getCenter ()

Se você não quiser mudar a visão (o que eu posso imaginar), você pode pensar em uma função para calcular o centro da extensão. Isso será fácil em certos tipos de sistemas de coordenadas (EPSG: 3857, que é baseado em metros), mas mais difícil em outros (EPSG: 4326, baseado em coordenadas lon / lat). Uma função que pudesse calcular este centro (em EPSG: 3857) seria a seguinte;

função getCenterOfExtent (Extent) {var X = Extent [0] + (Extent [2] -Extent [0]) / 2; var Y = Extensão [1] + (Extensão [3] -Extensão [1]) / 2; retornar [X, Y]; }

Espero que isto ajude!


Você pode obter seu centro de extensão usando ol.extent.getCenter. No meu caso, tenho uma camada vetorial e quero obter o centro de um recurso depois de clicar nele.

Então

crie uma interação de clique simples e adicione-a ao mapa

var select = new ol.interaction.Select (); map.addInteraction (selecionar);

Para cada clique…

select.on ('selecionar', função (e) {

Obtenha o primeiro recurso selecionado, da matriz "selecionada". Em seguida, obtenha sua geometria e, em seguida, sua extensão.

Use essa extensão para encontrar seu centro, usandool.extent.getCenter

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

O mesmo código funcionou para linhas, pontos e polígonos.

PS. Ool.extent.getCenteré estável, usado na OL versão 3.9.0 e versão 3.10.1 e você pode encontrá-lo aqui


Você também pode obter o centro com:

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

OpenLayers v 6.1.1

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


Assista o vídeo: Openlayers 6 Tutorial #6 - Layer Switcher