GeotiefExplore/src/js/core/Map.js
Arno Kaimbacher 8b57f1dcb8 - add ZoomControl.js
- add zoom control as default control to map object
2020-12-15 12:48:52 +01:00

91 lines
No EOL
2.5 KiB
JavaScript

import { OrbitControls } from '../lib/OrbitControls';
import * as dom from './domUtil';
import { HomeButton } from '../controls/HomeButton';
import { ZoomControl } from '../controls/ZoomControl';
import * as util from './utilities';
class Map extends OrbitControls {
container;
_layers;
_controlCorners;
_controlContainer;
_controls;
constructor(size, center, camera, scene, domElement, container) {
// call parent constructor of OrbitControls
super(size, center, camera, scene, domElement);
this.camera = camera;
this.container = container;
//init the control corners
if (this._initControlPos) {
this._initControlPos();
}
this._layers = {};
this.initControls();
}
get layers() {
return this._layers;
}
_initControlPos() {
//var test = document.getElementById("webgl");
var corners = this._controlCorners = {};
var l = 'gba-';
var container = this._controlContainer =
//util.create('div', l + 'control-container', this.domElement);
dom.createDom("div", { "class": l + 'control-container' }, this.container);
function createCorner(vSide, hSide) {
var className = l + vSide + ' ' + l + hSide;
//corners[vSide + hSide] = util.create('div', className, container);
corners[vSide + hSide] = dom.createDom("div", { "class": className }, container);
}
createCorner('top', 'left');
createCorner('top', 'right');
createCorner('bottom', 'left');
createCorner('bottom', 'right');
}
initControls() {
this._controls = this._controls || {};
// this._controls.homeControl = (new HomeButton()).addTo(this);
let homeControl = this._controls.homeControl = new HomeButton();
homeControl.addTo(this);
let zoomControl = this._controls.zoomControl = new ZoomControl();
zoomControl.addTo(this);
}
addLayer(layer) {
var id = util.stamp(layer);
if (this._layers[id]) {
return this;
}
this._layers[id] = layer;
//layer._mapToAdd = this;
layer.index = id;
//if (layer.beforeAdd) {
// layer.beforeAdd(this);
//}
//this.whenReady(layer._layerAdd, layer);
layer._layerAdd(this);
this.emit("change");
return this;
}
hasLayer (layer) {
return !!layer && (util.stamp(layer) in this._layers);
}
}
export { Map };