Added missing dependency to the iwmlib.
This commit is contained in:
		
							parent
							
								
									285e41434a
								
							
						
					
					
						commit
						46b80c3e2a
					
				
							
								
								
									
										113
									
								
								lib/pixi/maps/display.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								lib/pixi/maps/display.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,113 @@
 | 
			
		||||
/**
 | 
			
		||||
 * The class CoordinateDisplay shows the coordinates of the center of the sceen
 | 
			
		||||
 * in the top left of the renderer.
 | 
			
		||||
 *
 | 
			
		||||
 * @private
 | 
			
		||||
 * @class
 | 
			
		||||
 * @extends PIXI.Graphics
 | 
			
		||||
 * @see {@link http://pixijs.download/dev/docs/PIXI.Graphics.html|PIXI.Graphics}
 | 
			
		||||
 */
 | 
			
		||||
export class CoordinateDisplay extends PIXI.Graphics {
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates an instance of a CoordinateDisplay.
 | 
			
		||||
     *
 | 
			
		||||
     * @constructor
 | 
			
		||||
     * @param {MapApp} mapApp - The MapApp where the coordinates should be displayed.
 | 
			
		||||
     */
 | 
			
		||||
    constructor(mapApp) {
 | 
			
		||||
        super()
 | 
			
		||||
 | 
			
		||||
        this.app = mapApp
 | 
			
		||||
 | 
			
		||||
        this.crosshair = new PIXI.Graphics()
 | 
			
		||||
 | 
			
		||||
        this.outerSize = 15
 | 
			
		||||
        this.innerSize = 5
 | 
			
		||||
        this.thickness = 2
 | 
			
		||||
        this.color = 0xe73230
 | 
			
		||||
 | 
			
		||||
        this.crosshair.lineStyle(this.thickness, this.color)
 | 
			
		||||
        this.crosshair.moveTo(-this.outerSize, 0)
 | 
			
		||||
        this.crosshair.lineTo(-this.innerSize, 0)
 | 
			
		||||
        this.crosshair.moveTo(this.innerSize, 0)
 | 
			
		||||
        this.crosshair.lineTo(this.outerSize, 0)
 | 
			
		||||
 | 
			
		||||
        this.crosshair.moveTo(0, -this.outerSize)
 | 
			
		||||
        this.crosshair.lineTo(0, -this.innerSize)
 | 
			
		||||
        this.crosshair.moveTo(0, this.innerSize)
 | 
			
		||||
        this.crosshair.lineTo(0, this.outerSize)
 | 
			
		||||
 | 
			
		||||
        this.text = new PIXI.Text(
 | 
			
		||||
            'Pending ...',
 | 
			
		||||
            new PIXI.TextStyle({
 | 
			
		||||
                fontFamily: 'Arial',
 | 
			
		||||
                fontSize: 14,
 | 
			
		||||
                fontWeight: 'bold',
 | 
			
		||||
                fill: '#f6f6f6',
 | 
			
		||||
                stroke: '#434f4f',
 | 
			
		||||
                strokeThickness: 3
 | 
			
		||||
            })
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        this.refreshCoordinates()
 | 
			
		||||
 | 
			
		||||
        this.yOffset = 20
 | 
			
		||||
        this.volume = 32
 | 
			
		||||
        this.margin = 5
 | 
			
		||||
 | 
			
		||||
        this._updateFrame()
 | 
			
		||||
 | 
			
		||||
        this.text.position.set(20 + this.margin, this.yOffset + this.volume + 2 * this.margin)
 | 
			
		||||
 | 
			
		||||
        this.addChild(this.text)
 | 
			
		||||
        this.addChild(this.crosshair)
 | 
			
		||||
        this.setCrosshair()
 | 
			
		||||
 | 
			
		||||
        window.setInterval(this.refreshCoordinates.bind(this), 300)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    _updateFrame() {
 | 
			
		||||
        this.clear()
 | 
			
		||||
        this.lineStyle(3, 0x434f4f, 1)
 | 
			
		||||
            .beginFill(0x434f4f, 0.6)
 | 
			
		||||
            .drawRoundedRect(20, this.yOffset + this.volume + this.margin, this.text.width + 2 * this.margin, 32, 5)
 | 
			
		||||
            .endFill()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    toggleCrosshair() {
 | 
			
		||||
        if (this.crosshair.parent) this.disableCrosshair()
 | 
			
		||||
        else this.enableCrosshair()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    enableCrosshair() {
 | 
			
		||||
        this.addChild(this.crosshair)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    disableCrosshair() {
 | 
			
		||||
        this.removeChild(this.crosshair)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Refreshes displayed coordinates.
 | 
			
		||||
     *
 | 
			
		||||
     * @return {MapApp} Returns the MapApp object for chaining.
 | 
			
		||||
     */
 | 
			
		||||
    refreshCoordinates() {
 | 
			
		||||
        if (this.app.mapLayer.mapview.focus && this.app.mapLayer.mapview.zoom) {
 | 
			
		||||
            //TODO pass a mapview to avoid global access.
 | 
			
		||||
            var coords = this.app.mapLayer.mapview.focus
 | 
			
		||||
            this.setCrosshair()
 | 
			
		||||
            this.text.text =
 | 
			
		||||
                'Lat: ' +
 | 
			
		||||
                coords.x.toFixed(4) +
 | 
			
		||||
                '| Lng: ' +
 | 
			
		||||
                coords.y.toFixed(4) +
 | 
			
		||||
                '| Zoom: ' +
 | 
			
		||||
                this.app.mapLayer.mapview.zoom.toFixed(2)
 | 
			
		||||
            this._updateFrame()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    setCrosshair() {
 | 
			
		||||
        this.crosshair.position.set(this.app.center.x, this.app.center.y)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user