addControl은 ol.control.FullScreen에 문제를 제공합니다.

Aug 18 2020

내가 사용하려고하면, OpenLayers의 일부 사용자 정의를 실험 해요 map.addControlol.control.FullScreen나는이 오류 메시지가 표시됩니다

잡히지 않은 TypeError : t.element.setMap은 함수가 아닙니다.

이 메시지는 PluggableMap.js.

나는 이것을한다:

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

내가 의견을 fullScreen말하면지도에서 엉뚱한 문제를 볼 수 있습니다.

답변

TomazicM Aug 20 2020 at 02:36

약간의 실험을 통해 이것이 OL 버그 인 것 같습니다. 질문의 코드는 IE11, Edge (신규) 및 Chrome에서 작동하지만 Firefox에서는 작동하지 않습니다.

다행히 해결 방법이 있습니다. 전체 화면 컨트롤이 기본지도 컨트롤로 추가되면 Firefox에서도 작동합니다.

이 경우 컨트롤은 다음과 같이지도에 추가됩니다.

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