addControl dá um problema com ol.control.FullScreen

Aug 18 2020

Estou experimentando algumas personalizações do OpenLayers, quando tento usar map.addControlcom ol.control.FullScreenvejo esta mensagem de erro:

TypeError não capturado: t.element.setMap não é uma função

Esta mensagem vem de PluggableMap.js.

Eu faço isso:

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

Se eu comentar fullScreenposso ver sem problemas o mapa.

Respostas

TomazicM Aug 20 2020 at 02:36

Com algumas experiências, parece que este é um bug OL. O código da pergunta funciona no IE11, Edge (novo) e Chrome, mas não no Firefox.

Felizmente, há uma solução alternativa. Se o controle de tela inteira for adicionado como um controle de mapa padrão, ele também funcionará no Firefox.

Neste caso, o controle é adicionado ao mapa assim:

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