define([
'html!lgDir/gridLayer',
'css!lgDir/gridLayer'
], function(tplLayout) {
// L.ZoomViewer = L.Control.extend({
// onAdd: function(){
// var gauge = L.DomUtil.create('div');
// gauge.style.width = '30px';
// gauge.style.background = 'rgba(255,255,255,1)';
// gauge.style.textAlign = 'center';
// gauge.style.margin = '77px 0 0 12px';
// gauge.style.height = '30px';
// gauge.style.fontSize = '20px';
// gauge.style.lineHeight = '30px';
// map.on('zoomstart zoom zoomend', function(ev){
// gauge.innerHTML = map.getZoom();
// })
// return gauge;
// }
// });
var a = 0,b = 9,z = 0;
function init(){
if($(".tools-layerGrid").hasClass("cur")){
$("#rule").show();
} else{
$("#rule").hide();
if(cl_start){
map2DViewer.map.removeLayer(cl_start);
map2DViewer.map.removeLayer(polygon);
}
}
// $("#rule").show();
}
ONEMAP.C.publisher.subscribe(fullMap, 'layout::fullMap');
$("body").append(tplLayout);
$("#rule h2").dragmove($("#rule"));
// 全屏
function fullMap(option){
if(option){
$("#rule").hide();
}else{
$("#rule").show();
}
}
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 = " ";
var shuchu = '';
// document.querySelector('.lgPopUp').innerHTML = contents+options;
document.querySelector('.lgPopUp').innerHTML = contents+shuchu;
document.querySelector('.lgPopUp').style.display = "block";
document.querySelector('.close').onclick = function(){
document.querySelector('.lgPopUp').style.display = "none";
}
document.querySelector('.lgPopUp .output').addEventListener('click', saveFile);
$(".lgPopUp .close").off("click").on("click",function(){
$(".lgPopUp").html("").hide();
})
// 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 = "";
// }
}
// require(['lgDir/gridLayer_obj'],function(){
// console.log("obj");
// bindEvents();
// })
// function bindEvents(){
var cl_start = new L.canvasLayer;
cl_start.addTo(map2DViewer.map);
// polygon
var polygon = L.polygon([
[0, 0],[0, 0],[0, 0],[0, 0]
], {color: 'trasparent'}).addTo(map2DViewer.map);
var rule = document.querySelector('#rule .rule'); // 分包规则
var levelSelect = document.querySelectorAll('#rule .level select'); // 分包级别(总)
var diyBtn = document.querySelector('#rule .diyRules button'); // 确定自定义规则
var showGridBtn = document.querySelector('#rule .showGrid'); // 显示网格
var showRangeBtn = document.querySelector('#rule .showRange'); // 显示空间范围
var rangeInput = document.querySelectorAll('#rule .range input'); // 显示空间范围
var generateListBtn = document.querySelector('#rule .generateList'); // 生成包名列表
var activeBag = [[0,9,0],[10,14,7],[15,19,11]]; // 旧分包规则
var diyRules,scale,mz; // 自定义规则等
var mCrd = new Array(); // 包名列表参数
$('#rule .closeRule,.leaflet-contextmenu-item:contains("清空地图")').off("click").on("click",function(){
map2DViewer.map.removeLayer(cl_start);
$("#rule").hide();
map2DViewer.map.removeLayer(polygon);
$("#topBar .total-content .tools-layerGrid").removeClass("cur");
})
// $('.leaflet-contextmenu-item:contains("清空地图")').off('click', gridClear).on('click', gridClear)
rule.onchange = function(){
var grade = rule.options[rule.selectedIndex].value; // 当前所选规则
for(var i=0;i 180 || lng1 < -180 || lng2 > 180 || lng2 < -180){
alert("请输入正确的经度范围,合法取值范围为:经度[-180,180]");
stat = false;
}
else if(lng2 <= lng1){
alert("请输入正确的经度范围,右下角经度须大于左上角经度");
stat = false;
}
else if(lat1 > 90 || lat1 < -90 || lat2 > 90 || lat2 < -90){
alert("请输入正确的纬度范围,合法取值范围为:纬度[-90,90]");
stat = false;
}
else if(lat1 <= lat2){
alert("请输入正确的纬度范围,左上角纬度必须大于右下角纬度");
stat = false;
}
else{
crds.push(lng1,lng2,lat1,lat2);
}
}
if(crds.length == 4){
L.control.fitBds(crds,z);
}
// console.log(crds);
}
generateListBtn.onclick = function(){
if(mCrd == ""){
alert("请先显示空间范围");
}
else{
L.control.showNameList(mCrd,mz);
}
}
function fakeClick(obj) {
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
obj.dispatchEvent(ev);
}
function exportRaw(name, data) {
var urlObject = window.URL || window.webkitURL || window;
var export_blob = new Blob([data]);
var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
save_link.href = urlObject.createObjectURL(export_blob);
save_link.download = name;
fakeClick(save_link);
}
function saveFile(){
var pv = document.querySelectorAll('.lgPopUp div.list p');
var mobileCode = '';
for(var i=0;i -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE浏览器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
if(isIE) {
return "ie";
} else if(isEdge) {
return "Edge";
} else{
return "-1";//非IE
}
}
// }
return ONEMAP.M.GridLayer = {
init: init,
};
})