У меня есть карта OpenLayers 3 с базовым слоем и векторным слоем.
this.topoLayer = new ol.layer.Vector({
source: new ol.source.Vector(),
style: style
});
var baseLayer = new ol.layer.Tile({
source: new ol.source.XYZ({
url: 'http://[…]/{z}/{x}/{y}.png',
crossOrigin: 'null'
})
});
this.map = new ol.Map({
target: 'map',
layers: [baseLayer, this.topoLayer],
view: new ol.View2D({
center: ol.proj.transform([11.38, 48.54], this.options.markerEPSG, this.options.mapEPSG),
zoom: 5,
}),
});
После взаимодействия с пользователем я добавляю и удаляю несколько функций векторного слоя. Вот функция, которая добавляет новую функцию:
var feature = new ol.Feature({
topo: topo,
selected: false,
geometry: new ol.geom.Point(ol.proj.transform(location, this.options.markerEPSG, this.options.mapEPSG)),
});
this.topoLayer.getSource().addFeatures([feature]);
После добавления / удаления новой функции я хотел бы автоматически масштабировать и панорамировать карту, чтобы она соответствовала моим функциям. В старом API OpenLayers на векторных слоях была функция getDataExtent
для извлечения «ограничивающей рамки» вокруг всех показанных функций. Но мне интересно, как это сделать с новым API.
var coordinates = features.map(function(feature) {return feature.getGeometry().getCoordinates();});
var extent = ol.extent.boundingExtent(coordinates);
- person SomeBdyElse   schedule 29.12.2013map.getView().fit(extent, map.getSize())
, чтобы настроить карту. - person philk   schedule 08.12.2015