OpenLayers 3 Étendue de toutes les entités sur un calque vectoriel?
J'ai un OpenLayers 3 carte avec une couche de base et une couche vecteur.
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,
}),
});
Lors de l'interaction de l'utilisateur, j'ai ajouter et supprimer plusieurs caractéristiques de la couche vecteur. Voici la fonction qui ajoute une nouvelle fonctionnalité:
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]);
Après l'ajout/retrait d'une nouvelle fonctionnalité, je voudrais automatiquement un zoom et de panoramique de la carte pour l'adapter à mes caractéristiques. Dans l'ancienne API OpenLayers, il y avait le getDataExtent
fonction sur des calques vectoriels pour récupérer une "zone de délimitation" autour de toutes les fonctionnalités indiquées. Mais je me demande comment faire avec la nouvelle API.
source d'informationauteur SomeBdyElse
Vous devez vous connecter pour publier un commentaire.
Dans la version 3.7,
ol.View.fitExtent()
etol.View.fitGeometry()
ont été unifiés en une seule fonction:fit
.Donc maintenant le code est:
Basé sur Tyler DeWitt la réponse vous devez être en mesure de faire quelque chose comme ceci:
Edit: Comme Tim et Stuart, dit le ci-dessus ne fonctionne plus. Ce qui suit devrait faire l'affaire:
A pas été testé.
Il devrait y avoir moyen plus élégant, mais je ne suis pas sûr que maintenant, où la trouver.
Puisque je ne peux pas commenter encore, je vais poster une autre réponse:
Danny Hoek la réponse n'est pas correcte plus, voici la mise à jour:
Fondamentalement que la 2D prop semble avoir disparu.
Il y a un
getExtent()
fonctionol.source
maintenant, je suis donc en mesure d'appeler<layer>.getSource().getExtent()
. Je ne peux pas comprendre comment obtenir ma carte pour effectuer un zoom à ce niveau, cependant.<map>.zoomToExtent(extent)
n'existe plus.