L.canvasLayer = L.GridLayer.extend({ createTile: function(coords){ // console.log("createTilea and z:"+z+"a:"+a+"b:"+b); var tile = L.DomUtil.create('canvas', 'leaflet-tile'); var ctx = tile.getContext('2d'); var size = this.getTileSize() tile.width = size.x tile.height = size.y // 将切片号乘以切片分辨率,默认为256pixel,得到切片左上角的绝对像素坐标 var nwPoint = coords.scaleBy(size); // 根据绝对像素坐标,以及缩放层级,反投影得到其经纬度 var nw = map2DViewer.map.unproject(nwPoint, z) // console.log(tile.width); ctx.lineWidth = 1; ctx.strokeStyle = 'red'; var lstCoord = Math.pow(2, coords.z) - 1; if(coords.z - z <= 1 && coords.z - z >= -1){ // console.log("coords.z: "+ coords.z); // console.log("z: "+ z); if(coords.z == z){ // 同级时直接绘制 ctx.beginPath(); ctx.moveTo(0, 0); ctx.lineTo(size.x-1, 0); ctx.lineTo(size.x-1, size.y-1); ctx.lineTo(0, size.y-1); ctx.closePath(); ctx.fillStyle = 'rgba(225,225,225,0.5)'; ctx.fillRect(0, 0, size.x, 70); ctx.font = "18px Arial"; ctx.fillStyle = 'black'; ctx.textAlign = 'left'; ctx.fillText(a+'-'+b+'-'+z+'-'+coords.x+'-'+coords.y+'.ptp', 40, 20); ctx.font = "14px Arial"; ctx.textAlign = 'left'; ctx.fillText('lat: ' + nw.lat.toFixed(6), 40, 40); // 纬度 ctx.fillText('lon: ' + nw.lng.toFixed(6), 40, 60); // 经度 } else{ // 非同级时 var lstCoord = Math.pow(2, coords.z) - 1; if(coords.z - z < 0 && coords.z - z > -2){ var mul = Math.pow(2, (z-coords.z)); for(var i=0;i 1){ xhr2 = ajax({ url: config.countServer+"/tileSizeData/"+fileName+"/", //请求地址 type: "POST", data: { "ptplist": JSON.stringify(tiles)}, dataType: "json", success: function (response, xml) { esc.innerHTML = "确定"; loading.style.display = "none"; var str = JSON.parse(response); // console.log(str); // console.log(str.total); if(str.total == -1){ lgPopUp_none.style.display = "block"; blackBoard.style.display = "block"; lgPopUp_total.style.display = "none"; } else{ lgPopUp_total.style.display = "block"; blackBoard.style.display = "block"; // alert("当前数据包总大小为:"+str.total); tileType.innerHTML = fileName; tileSize.innerHTML = str.total; } }, fail: function (status) { loading.style.display = "none"; console.log("post data err"); } }); } esc.onclick = function(){ if(esc.innerHTML == "取消"){ // xhr1.abort(); xhr2.abort(); esc.innerHTML = "确定"; } if(esc.innerHTML == "确定"){ lgPopUp_total.style.display = "none"; blackBoard.style.display = "none"; } } qd.onclick = function(){ lgPopUp_none.style.display = "none"; blackBoard.style.display = "none"; } } L.control.showNameList = function(mcrd,mz){ console.log(mcrd) var merc = new SphericalMercator({ size: 256 }); var minX = merc.xyz(mcrd, mz).minX; var maxX = merc.xyz(mcrd, mz).maxX; var minY = merc.xyz(mcrd, mz).minY; var maxY = merc.xyz(mcrd, mz).maxY; var nameList = new Array(); var tileList = new Array(); for(var i=minX;i<=maxX;i++){ for(var j=minY;j<=maxY;j++){ nameList.push(a+"-"+b+"-"+z+"-"+i+"-"+j+".ptp"); tileList.push(a+"-"+b+"-"+z+"-"+i+"-"+j); } } var contents = "

包名列表:

" +'

'+ nameList.join('

' ) + '

×
'; var options = "
"; document.querySelector('.lgPopUp').innerHTML = contents+options; document.querySelector('.lgPopUp').style.display = "block"; document.querySelector('.close').onclick = function(){ document.querySelector('.lgPopUp').style.display = "none"; } // console.log("minX: "+merc.xyz(mcrd, mz).minX); // console.log("maxX: "+merc.xyz(mcrd, mz).maxX); // console.log("minY: "+merc.xyz(mcrd, mz).minY); // console.log("maxY: "+merc.xyz(mcrd, mz).maxY); var cal = document.querySelector('.calculation button'); cal.onclick = function(){ var myselect=document.getElementById("choose"); var index=myselect.selectedIndex; // selectedIndex代表的是你所选中项的index // myselect.options[index].value; var fileName = myselect.options[index].text; L.control.request(fileName, tileList); var lgPopUp_total = document.querySelector('.lgPopUp_total'); var blackBoard = document.querySelector('.blackBoard'); var tileType = document.querySelector('.lgPopUp_total .tileType'); var tileSize = document.querySelector('.lgPopUp_total .tileSize'); var loading = document.querySelector('.lgPopUp_total img'); var esc = document.querySelector('.lgPopUp_total .esc'); lgPopUp_total.style.display = "block"; blackBoard.style.display = "block"; tileType.innerHTML = fileName; loading.style.display = "block"; esc.innerHTML = "取消"; tileSize.innerHTML = ""; } }