Biorąc pod uwagę Geometry
obiekt w OpenLayers 3. W jaki sposób można uzyskać jego centrum?
Starsze wersje OpenLayers zawierały getCentroid
metodę. Było też getBounds
obejście. Ale wydaje się, że zostały one usunięte w OpenLayers 3.
źródło
Biorąc pod uwagę Geometry
obiekt w OpenLayers 3. W jaki sposób można uzyskać jego centrum?
Starsze wersje OpenLayers zawierały getCentroid
metodę. Było też getBounds
obejście. Ale wydaje się, że zostały one usunięte w OpenLayers 3.
Trochę obejścia, ale możesz użyć getExtent
metody na geometrii, aby ustawić zasięg na mapie. Zakładam, że środek widoku będzie wtedy środkiem geometrii;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
Jeśli nie chcesz zmieniać widoku (co mogę sobie wyobrazić), możesz pomyśleć o funkcji obliczającej środek zasięgu. Będzie to łatwe w niektórych typach układów współrzędnych (EPSG: 3857, który jest oparty na metrach), ale trudniejsze w innych (EPSG: 4326, w oparciu o współrzędne lon / lat). Funkcja, która mogłaby obliczyć to centrum (w EPSG: 3857) byłaby następująca;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
Mam nadzieję że to pomoże!
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;
getCenterOfExtent
ol.extent.getCenter
i jest stabilna. Na przykład zrobiłemvar aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
i podałem środek punktów, linii i wielokątów. Sprawdź to tutajMożesz uzyskać jego środek zakresu za pomocą
ol.extent.getCenter
. W moim przypadku mam warstwę wektorową i chcę uzyskać środek funkcji po kliknięciu.Więc
utwórz proste kliknięcie i dodaj je do mapy
Dla każdego kliknięcia ...
Uzyskaj pierwszą wybraną funkcję z „wybranej” tablicy. Następnie uzyskaj jego geometrię, a następnie zasięg.
Użyj tego zasięgu, aby znaleźć jego centrum, używając
ol.extent.getCenter
Ten sam kod działał dla linii, punktów i wielokątów.
PS.
ol.extent.getCenter
Jest stabilny, stosowany w OL wersji 3.9.0 i wersji 3.10.1 i może znajdziesz ją tutajźródło
Możesz także uzyskać centrum dzięki:
źródło
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.getCenter()
Metoda ma zastosowanie tylko do geometrii kołaol.geom.Circle
. Czy to możliwe, że masz inny typ geometrii?OpenLayers v 6.1.1
var center = e.feature.getGeometry().getExtent().getCenter()
źródło