'use strict'; var TravelnetIcon = L.icon({ iconUrl: 'pics/travelnet_inv.png', iconSize: [64, 64], iconAnchor: [32, 32], popupAnchor: [0, -32] }); var TravelnetOverlay = L.LayerGroup.extend({ initialize: function(wsChannel, layerMgr) { L.LayerGroup.prototype.initialize.call(this); this.layerMgr = layerMgr; this.wsChannel = wsChannel; this.currentObjects = []; this.onLayerChange = this.onLayerChange.bind(this); this.onMapMove = debounce(this.onMapMove.bind(this), 50); }, onLayerChange: function(layer){ this.reDraw(true); }, onMapMove: function(){ this.reDraw(false); }, reDraw: function(full){ var self = this; if (this._map.getZoom() < 10) { this.clearLayers(); this.currentObjects = []; return; } if (full){ this.clearLayers(); this.currentObjects = []; } var mapLayer = this.layerMgr.getCurrentLayer() var min = this._map.getBounds().getSouthWest(); var max = this._map.getBounds().getNorthEast(); var y1 = parseInt(mapLayer.from/16); var y2 = parseInt(mapLayer.to/16); var x1 = parseInt(min.lng); var x2 = parseInt(max.lng); var z1 = parseInt(min.lat); var z2 = parseInt(max.lat); //TODO: get coords api.getMapObjects( x1, y1, y1, x2, y2, z2, "travelnet") .then(function(travelnets){ //TODO: remove non-existing markers, add new ones if (!full){ self.clearLayers(); } travelnets.forEach(function(travelnet){ var popup = "