addControlはol.control.FullScreenに問題を引き起こします
Aug 18 2020
OpenLayersのいくつかのカスタマイズを試していますmap.addControl
が、で使用しようとするとol.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()])
});