addControl gibt ein Problem mit ol.control.FullScreen

Aug 18 2020

Ich experimentiere mit einigen Anpassungen von OpenLayers, wenn ich versuche, map.addControlmit zu verwenden ol.control.FullScreen, wird diese Fehlermeldung angezeigt:

Nicht erfasster TypeError: t.element.setMap ist keine Funktion

Diese Nachricht stammt von PluggableMap.js.

Ich mache das:

var map = new ol.Map({
  target: 'map',
});

var fullScreen = new ol.control.FullScreen({className: 'ol-full-screen', tipLabel: 'Toggle full-screen'});
map.addControl(fullScreen);

var scaleLine = new ol.control.ScaleLine({className: 'ol-scale-line', target: document.getElementById('scale-line')});
map.addControl(scaleLine);

var view = new ol.View({
  center: ol.proj.fromLonLat([9.25040, 45.54318]),
  zoom: 2
});
map.setView(view);

var osm = new ol.layer.Tile({
  source: new ol.source.OSM()
});
map.addLayer(osm);

Wenn ich kommentiere fullScreenkann ich ohne Probleme die Karte sehen.

Antworten

TomazicM Aug 20 2020 at 02:36

Mit etwas Experimentieren scheint dies ein OL-Fehler zu sein. Der Code aus der Frage funktioniert in IE11, Edge (neu) und Chrome, aber nicht in Firefox.

Zum Glück gibt es Abhilfe. Wenn die Vollbildsteuerung als Standardkartensteuerung hinzugefügt wird, funktioniert sie auch in Firefox.

Die Steuerung wird in diesem Fall wie folgt zur Karte hinzugefügt:

var map = new ol.Map({
  target: 'map',
  controls: ol.control.defaults().extend([new ol.control.FullScreen()])
});