91 lines
No EOL
2.5 KiB
JavaScript
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 }; |