Deaktivieren zoom mit Openlayers
ich bin mit OpenLayers zur Anzeige von benutzerdefinierten OSM-Karten auf meiner website.
Habe ich einige Punkte zu beachten: die Karte zu beheben (was bedeutet, dass wir können nicht ziehen Sie Sie oder ihn zu vergrößern).
Ich habe ein problem mit dem zoom, ich kann nicht verwalten, zu deaktivieren, Zoomen mit der Maus. Wer hat einen Tipp?
map = new OpenLayers.Map('map');
map.events.remove("move");
map.events.remove("movestart");
map.events.remove("moveend");
map.events.remove("zoomend");
map.events.remove("mouseover");
map.events.remove("mouseout");
map.events.remove("mousemove");
map.events.remove("zoomstart");
var nav = new OpenLayers.Control.Navigation({
defaultDblClick: function(event) { return ; }
});
map[index].addControl(nav);
Auch, wenn jemand einen Tipp hat, entfernen Sie alle Navigations-Veranstaltungen einfacher als das, es würde sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deaktivieren Sie die Standard-Kontrollen auf Ihrer Karte durch die übergabe eines leeren Arrays:
Vereinfachung der Ansatz des Mahdi Ergebnisse in
Diese Weise deaktivieren der zoom auf Mausrad nicht erforderlich ist, anpassen die Optionen auf den Bau anzeigen, z.B. durch die Schaffung von anzeigen ohne Kontrolle (obwohl das war etwas verlangt Lght). Neben der re-Aktivierung der zoom funktioniert in ähnlicher Weise.
Darüber hinaus durch die Suche Kontrollen matching-enabled-Eigenschaft
zoomWheelEnabled
eher als class-Namen unterstützt es benutzerdefinierte Steuerelemente abgeleitet vonOpenLayers.Control.Navigation
.var i, l, c = map.getControlsBy("zoomWheelEnabled", false); for ( i = 0, l = c.length; i < l; i++ ) { c[i].enableZoomWheel(); }
Für OpenLayers3 die Interaktion array ist auch leer sein muss.
Können Sie das folgende tun auch:
Gefunden hier.
Für andere Optionen wie abschalten ziehen, können Sie einen Blick auf die Dokumentation und passen Sie den obigen code.
Hier ist eine weitere einfache Möglichkeit zum einschränken der zoom Ereignis beruhen, auf eine gewisse Logik. Da OpenLayers nicht eine "beforezoom'
Wie das funktioniert:
Für jede Art von Zoomen Aktivität, die OpenLayers-API letztendlich ruft die Funktion, die aufgerufen zoomTo. Also, bevor Sie überschreiben es, wir kopieren Sie die Funktion in eine neue Funktion namens "zoomToProxy'. Die haben wir außer Kraft setzen, und fügen Sie unsere bedingte zoom-Logik. Wenn wir möchten, dass die zoom passieren, wir rufen neue proxy-Funktion 🙂
Könnte man zurücksetzen der controls-array und fügen Sie die Zoom-und TouchNavigation zu.
Hoffe, es hilft ! 🙂