import 'babel-core/register' import 'babel-polyfill' import './style/public.css' import * as maptalks from 'maptalks' import { ThreeLayer } from 'maptalks.three' import meshStaus from './business/meshStaus' import initAmbient from './business/initAmbient' import { addGeo } from './core/dyWoker' import Event from './core/Event' import * as status from './business/statusManagement' let args = status.analysis() global.bus = new Event() global.map = new maptalks.Map('map', { center: [args.lon, args.lat], zoom: args.zoom, bearing: args.bearing, maxZoom: 20, minZoom: 15, maxPitch: 70, maxVisualPitch: 100, doubleClickZoom: false, forceRenderOnMoving: true, forceRenderOnZooming: true, forceRenderOnRotating: true, baseLayer: new maptalks.TileLayer('base', { 'urlTemplate': 'http://{s}.tile.osm.org/{z}/{x}/{y}.png', 'subdomains': ['a', 'b', 'c'] }) }) // Maker承载容器 global.vector = new maptalks.VectorLayer('vector', { enableAltitude: true, // enable altitude altitudeProperty: 'altitude' // altitude property in properties, default by 'altitude' }) vector.addTo(map) // 高层数据获取 const canvasTile = new maptalks.CanvasTileLayer('tile', { urlTemplate: 'https://{s}.data.osmbuildings.org/0.2/anonymous/tile/{z}/{x}/{y}.json', subdomains: ['a', 'b', 'c', 'd'], forceRenderOnMoving: true, forceRenderOnZooming: true, forceRenderOnRotating: true, repeatWorld: false, maxAvailableZoom: 15 }) map.addLayer(canvasTile) // 3DThree与map结合 global.threeLayer = new ThreeLayer('t', { forceRenderOnMoving: true, forceRenderOnZooming: true, forceRenderOnRotating: true }) threeLayer.prepareToDraw = initAmbient // 获取高层数据 function getCurrTiles() { let tileGrids = canvasTile.getTiles().tileGrids for (var i = 0; i < tileGrids.length; i++) { if (tileGrids[i].zoom >= 15) break } return tileGrids[i].tiles } threeLayer.draw = () => { addGeo(getCurrTiles()); delete threeLayer.draw; } threeLayer.addTo(map) let timeout = null map.on('moving moveend zoomend dragrotating dragrotateend', () => { clearTimeout(timeout) timeout = setTimeout(() => { meshStaus() addGeo(getCurrTiles()) status.listStatus() }, 500) });