Eine kleine Problemumgehung, aber Sie können die getExtent
Methode für die Geometrie verwenden, um die Ausdehnung auf der Karte festzulegen. Ich gehe davon aus, dass der Mittelpunkt der Ansicht dann der Mittelpunkt der Geometrie ist.
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
Wenn Sie die Ansicht nicht ändern möchten (was ich mir vorstellen kann), können Sie sich eine Funktion zur Berechnung des Ausdehnungszentrums vorstellen. Dies ist in bestimmten Arten von Koordinatensystemen einfach (EPSG: 3857, das meterbasiert ist), in anderen jedoch schwieriger (EPSG: 4326, basierend auf Lon / Lat-Koordinaten). Eine Funktion, die dieses Zentrum berechnen könnte (in EPSG: 3857), wäre wie folgt;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
Hoffe das hilft!
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;
getCenterOfExtent
ol.extent.getCenter
und ist stabil. Zum Beispielvar aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
habe ich das Zentrum von Punkten, Linien und Polygonen gegeben. Überprüfen Sie es hierSie können sein Ausdehnungszentrum mit erhalten
ol.extent.getCenter
. In meinem Fall habe ich eine Vektorebene und möchte die Mitte eines Features erhalten, nachdem ich darauf geklickt habe.Damit
Erstellen Sie eine einfache Klickinteraktion und fügen Sie sie der Karte hinzu
Für jeden Klick ...
Holen Sie sich das erste ausgewählte Feature aus dem "ausgewählten" Array. Dann erhalten Sie seine Geometrie und dann seine Ausdehnung.
Verwenden Sie dieses Ausmaß, um das Zentrum zu finden
ol.extent.getCenter
Der gleiche Code funktionierte für Linien, Punkte und Polygone.
PS. Das
ol.extent.getCenter
ist stabil, wird in OL Version 3.9.0 und Version 3.10.1 verwendet und ist hier zu findenquelle
Sie können das Zentrum auch erhalten mit:
quelle
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.getCenter()
Methode ist nur auf Kreisgeometrien anwendbarol.geom.Circle
. Ist es möglich, dass Sie eine andere Art von Geometrie haben?OpenLayers v 6.1.1
var center = e.feature.getGeometry().getExtent().getCenter()
quelle