Учитывая Geometry
объект в OpenLayers 3. Как можно получить его центр?
Более старые версии OpenLayers предоставили getCentroid
метод. Был также getBounds
обходной путь. Но они, кажется, удалены в OpenLayers 3.
источник
Учитывая Geometry
объект в OpenLayers 3. Как можно получить его центр?
Более старые версии OpenLayers предоставили getCentroid
метод. Был также getBounds
обходной путь. Но они, кажется, удалены в OpenLayers 3.
Немного обходного пути, но вы можете использовать getExtent
метод геометрии, чтобы установить экстент на карте. Я предполагаю, что центр зрения будет тогда центром геометрии;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
Если вы не хотите менять представление (что я могу себе представить), вы можете подумать о функции для вычисления центра экстента. Это будет легко в некоторых типах систем координат (EPSG: 3857, основанная на метрах), но сложнее в других (EPSG: 4326, основанных на координатах lon / lat). Функция, которая может вычислить этот центр (в EPSG: 3857), будет выглядеть следующим образом;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
Надеюсь это поможет!
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;
getCenterOfExtent
ol.extent.getCenter
и его стабильной. Например, я сделалvar aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
и дал мне центр точек, линий и многоугольников. Проверьте это здесьВы можете получить его центр экстента, используя
ol.extent.getCenter
. В моем случае у меня есть векторный слой, и я хочу получить центр объекта после того, как я нажму на него.Так
создать простое взаимодействие с кликами и добавить его на карту
За каждый клик ...
Получить первую выбранную функцию из массива «selected». Затем получите его геометрию, а затем его размер.
Используйте эту степень, чтобы найти его центр, используя
ol.extent.getCenter
Тот же код работал для линий, точек и многоугольников.
PS.
ol.extent.getCenter
Стабильна, используется в OL версии 3.9.0 и версии 3.10.1 и вы можете найти его здесьисточник
Вы также можете получить центр с:
источник
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.getCenter()
Метод применим только к окружности геометрииol.geom.Circle
. Возможно ли, что у вас другой тип геометрии?OpenLayers v 6.1.1
var center = e.feature.getGeometry().getExtent().getCenter()
источник