2016-05-23 11 views
4

Ich habe eine Karte mit OpenLayers3 erstellt. Ich kann erfolgreich auf der Karte auf eine Ebene heran mit dem folgenden Code:OpenLayers3 - Animierte .Fest in einem bestimmten Umfang

map.getView().fit(extent, map.getSize()); 

jedoch woulld Ich mag etwas ähnlich in einer animierten Weise.

Ich weiß über die folgenden Animationen:

ol.animation.pan 
ol.animation.zoom 

Durch diese Verwendung kann ich nicht auf eine Ebene vergrößern, indem ol.animation.pan Ich kann nur bis zu einem Punkt (und nicht auf eine BoundingBox) schwenken und mit ol.animation.zoom kann ich auf eine Auflösung (und nicht auf eine Boundingbox) zoomen. Also, was ich suche, ist eine animierte .fit, damit ich in einem gewissen Ausmaß animiert zoomen kann.

Vorschläge, wie ich, dass geschätzt :)

+0

Ich denke, ich habe das schon versucht, aber ich habe keinen Weg gefunden, dies zu erreichen. Vielleicht ist eine Pull-Anfrage an die Bibliothek nötig. –

Antwort

0

würde erreichen kann ich gelöst nur auf diese Weise

var view = map.getView() 
var pan = ol.animation.pan({ source: view.getCenter() }); 
var zoom = ol.animation.zoom({ resolution: view.getResolution() }); 
map.beforeRender(pan, zoom); 
view.fit(extent, map.getSize()) 
3

mit v3.20.0 starten, hat Openlayers eine neue duration Option auf ol.View#fit(). Um eine 1 Sekunde Animation auf den Sitz Umfang zu erhalten, setzen Sie ihn auf 1000:

// OpenLayers v3.20.x 
view.fit(extent, size, {duration: 1000}); 

Beachten Sie auch, dass mit v3.21.0 starten, die API für ol.View#fit() vereinfacht - es benötigt nicht länger eine Größe eingestellt werden (es sei denn, Es gibt mehr als eine Karte auf der Seite):

// OpenLayers >= v3.21.0 
view.fit(extent, {duration: 1000});