З огляду на 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];
}
Сподіваюся, це допомагає!
getCenterOfExtent
Ви можете отримати його розмір центру, використовуючи ol.extent.getCenter
. У моєму випадку у мене є векторний шар, і я хочу отримати центр функції після того, як клацну на ньому.
Тому
створити просту взаємодію клацання та додати її до карти
var select = new ol.interaction.Select();
map.addInteraction(select);
За кожен клік ...
select.on('select', function(e) {
Отримайте першу обрану функцію із масиву "вибраний". Потім отримайте його геометрію, а потім і її ступінь.
Скористайтеся цією мірою, щоб знайти його центр, використовуючи ol.extent.getCenter
var aa = e.selected[0].getGeometry().getExtent();
var oo = ol.extent.getCenter(aa);
console.log("The center is : "+oo); // voila!!!!
});
Цей же код працював для ліній, точок та багатокутників.
PS. ol.extent.getCenter
Стабільна, використовується в OL версії 3.9.0 і версії 3.10.1 і ви можете знайти його тут
Ви також можете отримати центр за допомогою:
var center = e.feature.getGeometry().getCenter();
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()
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;