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.

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

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) ?


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.