addControl pose un problème avec ol.control.FullScreen
J'expérimente quelques personnalisations d'OpenLayers, quand j'essaie d'utiliser map.addControl
avec ol.control.FullScreen
je vois ce message d'erreur :
TypeError non intercepté : t.element.setMap n'est pas une fonction
Ce message vient de PluggableMap.js
.
Je fais ça:
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);
Si je commente fullScreen
, je peux voir sans problème la carte.
Réponses
Avec quelques expériences, il semble que ce soit un bogue OL. Le code de la question fonctionne dans IE11, Edge (nouveau) et Chrome, mais pas dans Firefox.
Heureusement, il existe une solution de contournement. Si le contrôle plein écran est ajouté en tant que contrôle de carte par défaut, il fonctionne également dans Firefox.
Le contrôle est dans ce cas ajouté à la carte comme ceci :
var map = new ol.Map({
target: 'map',
controls: ol.control.defaults().extend([new ol.control.FullScreen()])
});