addControl memberikan masalah dengan ol.control.FullScreen

Aug 18 2020

Saya melakukan percobaan beberapa penyesuaian OpenLayers, ketika saya mencoba menggunakan map.addControldengan ol.control.FullScreensaya melihat pesan kesalahan ini:

TypeError yang tidak tertangkap: t.element.setMap bukan sebuah fungsi

Pesan ini berasal dari PluggableMap.js.

Saya melakukan ini:

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

Jika saya berkomentar, fullScreensaya dapat melihat masalah whitout di peta.

Jawaban

TomazicM Aug 20 2020 at 02:36

Dengan beberapa percobaan, tampaknya ini adalah bug OL. Kode dari pertanyaan berfungsi di IE11, Edge (baru) dan Chrome, tetapi tidak di Firefox.

Untungnya ada solusinya. Jika kontrol layar penuh ditambahkan sebagai kontrol peta default, maka itu juga berfungsi di Firefox.

Kontrol dalam hal ini ditambahkan ke peta seperti ini:

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