Answers:
一种解决方法,但是您可以getExtent
在几何图形上使用方法在地图上设置范围。我假设视图的中心将成为几何的中心;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
如果您不想更改视图(可以想象),则可以考虑一个用于计算范围中心的函数。在某些类型的坐标系(EPSG:3857,基于米)中,这将是容易的,而在其他坐标系中(基于lon / lat坐标,EPSG:4326)将更加困难。可以计算该中心的函数(在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 aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
给了我点,线和面的中心。在这里查看
您可以使用以下方式获取其范围中心 ol.extent.getCenter
。就我而言,我有一个矢量层,我想在单击某个要素后获得其中心。
所以
创建一个简单的点击互动并将其添加到地图
var select = new ol.interaction.Select();
map.addInteraction(select);
每次点击...
select.on('select', function(e) {
从“ selected”数组中获取选择的第一个功能。然后获取其几何形状,然后获取其范围。
使用该范围找到其中心,使用 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.9.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;