In OpenLayers zoomen Sie auf das Ausmaß aller Überlagerungen

10

In Openlayers kann ich auf den Begrenzungsrahmen aller Ebenen wie folgt zoomen:

map.zoomToExtent();

Ich kann auch auf den Begrenzungsrahmen einer einzelnen Ebene zoomen:

map.zoomToExtent(layer_name.getDataExtent());

Gibt es eine einfache Möglichkeit, auf alle Ebenen außer der Basisebene zu zoomen? Mit anderen Worten, das Ausmaß aller Überlagerungen zeigt.

Mr_Chimp
quelle

Antworten:

6
  1. for-Schleife über alle Ihre Ebenen
    1. Überspringen Sie die Basisschicht [gemäß Ihren Anforderungen]
    2. Verwenden Sie bounds.extend (...), um die allumfassende Bounds-Objekt- API zu erstellen
  2. Zoomen Sie auf die resultierende Grenz- API
Vadim
quelle
Ich denke, das wird nicht funktionieren, weil extens () nur funktioniert, wenn es an einer kleineren Grenze aufgerufen wird als die, die als Argument übergeben wird.
Pakman
Wie könnte ich dasselbe mit OpenLayer API 3.x erreichen
imdadhusen
@imdadhusen warum würdest du nicht einfach die Dokumentation nachschlagen? gleiche Methode. gleiches Objekt. anderer Namespace. openlayers.org/en/v3.3.0/apidoc/ol.extent.html#extend
Vadim
1

Was ist mit dem Reparieren eines map.restrictedExtent und dem Aufrufen von map.zoomToExtent (map.restrictedExtent) ?

simo
quelle
Das würde das Problem nur verschieben ... Wie würde ich den Begrenzungsrahmen der Überlagerungen herausfinden, um den eingeschränkten Text zu erstellen?
Mr_Chimp
Haben Sie es mit ZoomToMaxExtent () versucht - aber es würde wahrscheinlich auf das Ausmaß der Basisebene zoomen, wenn es größer wäre? Wenn es nicht funktioniert, müssen Sie die Ausdehnung für jede Ovelay-Ebene abrufen und die größte behalten, um den eingeschränkten Text zu reparieren.
Simo
Ich habe ZoomToMaxExtend () ausprobiert und es zoomt auf die Basisebene. Ich habe dies in meiner Frage erwähnt, aber beim erneuten Lesen ist es nicht offensichtlich. Das Beibehalten des größten Begrenzungsrahmens würde nicht unbedingt funktionieren - dh wenn sich zwei Ebenen nicht überlappen. Ich denke, ich muss die Begrenzungsrahmen jeder Ebene irgendwie kombinieren und dann den Begrenzungsrahmen des resultierenden Objekts erhalten ...
Mr_Chimp
Das ist es! Was nicht so schwierig ist ... Aber ich stimme Ihnen zu, es ist überraschend, dass eine solche Methode noch nicht existiert (oder wir haben etwas verpasst ;-) ..)
simo
Hoffentlich haben wir etwas verpasst! Ich werde die Frage vorerst offen lassen ... nur für den Fall!
Mr_Chimp