/**
* @fileoverview 工具 测量地图面积 模块
* @author Song.Huang
* @version 1.0.0
*/
define(['vendorDir/map23dlib/leaflet.mapshot',
'css!vendorDir/map23dlib/leaflet.mapshot'
],
function() {
/**
* 状态值
* @type {Boolean}
* @default false
* @private
*/
var status = {
initialized: false //是否初始化
}
/**
* 模块数据 用于数据存储和外部调用
* @type {Object}
* 数据存放
*/
var modValue = {
loopAjaxTimeOut: {},
time_stamp: '',
postData: null,
mapShotControl: null,
offsetX :[0,0,108000,72000,54000,27000,13500,10800,5400,2700,1350,675,450,225,135,90,45,30,20,10],
offsetY :[0,0,72000,54000,36000,18000,9000,7200,3600,1800,900,450,300,150,90,60,30,20,10,5],
BLC: [200000000, 100000000, 50000000, 25000000, 12000000, 6000000, 1600000, 1550000, 800000, 400000, 200000, 100000, 50000, 25000, 12000, 2300, 3000, 1500, 800],
scaleMap:[591657527.6,295828763.8,147914381.9,73957190.95,36978595.47,18489297.74,9244648.868,4622324.434,2311162.217,1155581.109,577790.5543,288895.2771,144447.6386,72223.81928,36111.90964,18055.95482,9027.97741,4513.988705,2256.994353,1128.497176]
}
var status = {
countingLock: false
}
/**
* 初始化
* 监听事件
* @type {Function}
*/
function init(type) {
if (!status.initialized) {
status.initialized = true;
setLayout();
bindEvent();
subscribe();
modValue.mapShotControl = L.control.mapShot().addTo(map2DViewer.map);
}
if (type == 2) {
ONEMAP.C.publisher.publish({
modName: 'msAll'
}, 'tools:active');
} else {
ONEMAP.C.publisher.publish({
modName: 'toolMapShot'
}, 'tools:active');
}
}
function setLayout() {
$('body').append($('
'));
$('body').append($('#toolsBar .zhengshiDl'));
$(window).resize(function() {
layoutResize();
});
};
function bindEvent() {
};
function layoutResize() {
};
function mapfishPostData(postData) {
var newPostData = encodeURIComponent(changeMapShotData(postData));
// console.log(modValue.mapShotDrawData)
//var appId = 'print_osm_new_york_EPSG_900913';
var appId = "print_osm_EPSG3857";
if($("#paperSize").val() == 4){
appId = 'print_osm_EPSG3857';
}else if($("#paperSize").val() == 3){
appId = 'print_osm_EPSG3857_a3';
}
var format = postData.ext;
//console.log(changeMapShotData(postData));
var startTime = new Date().getTime();
ONEMAP.C.publisher.publish({ type: 'success', message: '开始下载' }, 'noteBar::add');
//return false;
$.ajax({
type: 'POST',
url: onemapUrlConfig.mapFishServerUrl + '/print/' + appId + '/report.' + format,
data: newPostData,
success: function(data) {
downloadWhenReady(startTime, data);
},
error: function(data) {
ONEMAP.C.publisher.publish({ type: 'error', message: '下载出错' }, 'noteBar::add');
},
dataType: 'json'
});
};
function downloadWhenReady(startTime, data) {
if ((new Date().getTime() - startTime) > 30000) {
ONEMAP.C.publisher.publish({ type: 'success', message: '准备下载' }, 'noteBar::add');
} else {
updateWaitingMsg(startTime, data);
setTimeout(function() {
$.getJSON(onemapUrlConfig.mapFishServerUrl + data.statusURL, function(statusData) {
if (!statusData.done) {
downloadWhenReady(startTime, data);
} else {
window.location = onemapUrlConfig.mapFishServerUrl + statusData.downloadURL;
//ONEMAP.C.publisher.publish({ type: 'success', message: 'Downloading: ' + data.ref }, 'noteBar::add');
}
}, function error(data) { ONEMAP.C.publisher.publish({ type: 'error', message: '下载出错' }, 'noteBar::add') });
}, 1000);
}
}
function changeMapShotData(postData) {
var scale = modValue.BLC[postData.zoom - 1];
var mapcenter = lonlatToMercator(postData.center);
var geojsonFeatures = [];
var geojsonStyles = {};
if ($(".zhengshiDl .stw").is(':checked')) {
//计算截图中心点
var ST = getPaperBounds(
{
lat:postData.center[1],
lng:postData.center[0]
},
297,
210,
postData.zoom
)
//获取截图元素数据
$.each(ST.polylineArry,function(i,t){
var guid = map23DControl.buildGuid('mapfish_style');
var polylinescoor = [];
for (var i = 0; i < t.length; i++) {
curpolylinescoor = stringToParse([t[i][1], t[i][0]]);
curpolylinescoor = lonlatToMercator(curpolylinescoor);
polylinescoor.push(curpolylinescoor);
}
var guid = guid;
var fItem = {
"geometry": {
"coordinates": polylinescoor,
"type": "LineString"
},
"properties": {
"_gx_style": guid
},
"type": "Feature"
};
geojsonStyles[guid] = {
"strokeColor": "#04cfed",
"strokeDashstyle": "solid",
"strokeLinecap": "round",
"strokeOpacity": 1,
"strokeWidth": 2
};
geojsonFeatures.push(fItem);
})
$.each(ST.markerArry,function(i,t){
var guid = map23DControl.buildGuid('mapfish_style');
var curmarkerCoor = stringToParse([t.latlng[1], t.latlng[0]]);
curmarkerCoor = lonlatToMercator(curmarkerCoor)
var fItem = {
"geometry": {
"coordinates": curmarkerCoor,
"type": "Point"
},
"properties": {
"_gx_style": guid
},
"type": "Feature"
};
geojsonStyles[guid] = {
"fontColor": "#ff6600",
"fontSize": "40px",
"fontStyle": "normal",
"fontWeight": "normal",
"label": t.title,
"labelAlign": "cm",
"labelXOffset": t.offset[0],
"labelYOffset": t.offset[1],
};
geojsonFeatures.push(fItem);
})
}
$.each(map2DViewer.map._layers, function(i, t) {
var guid = map23DControl.buildGuid('mapfish_style');
if (t.shape == 'Marker') {
var curmarkerCoor = stringToParse([t._latlng.lng, t._latlng.lat]);
curmarkerCoor = lonlatToMercator(curmarkerCoor)
var fItem = {
"geometry": {
"coordinates": curmarkerCoor,
"type": "Point"
},
"properties": {
"_gx_style": guid
},
"type": "Feature"
};
var iconUrl = onemapUrlConfig.siteUrl + '/scripts/vendor/leaflet/draw_new/images/marker-icon.png';
if (t.options.icon) {
iconUrl = t.options.icon.options.iconUrl;
if (iconUrl.length < 18) {
iconUrl = onemapUrlConfig.siteUrl + '/scripts/vendor/leaflet/draw_new/images/marker-icon.png';
}
geojsonStyles[guid] = {
"fillColor": "#ff0000",
"fillOpacity": 1,
"pointRadius": 25,
"externalGraphic": iconUrl,
"graphicOpacity": 1,
"graphicFormat": "image/png"
};
geojsonFeatures.push(fItem);
}
if (t.zhuji) {
var zguid = map23DControl.buildGuid('mapfish_style');
var zfItem = {
"geometry": {
"coordinates": curmarkerCoor,
"type": "Point"
},
"properties": {
"_gx_style": zguid
},
"type": "Feature"
};
geojsonStyles[zguid] = {
"fontColor": "#f00",
"fontFamily": "黑体",
"fontSize": "20px",
"fontStyle": "normal",
"fontWeight": "normal",
"label": t.zhuji,
"labelAlign": "cm",
"labelXOffset": "60.0",
"labelYOffset": "65.0",
};
geojsonFeatures.push(zfItem);
}
} else if (t.shape == 'Line') {
var polylinescoor = [];
for (var i = 0; i < t._latlngs.length; i++) {
curpolylinescoor = stringToParse([t._latlngs[i].lng, t._latlngs[i].lat]);
curpolylinescoor = lonlatToMercator(curpolylinescoor);
polylinescoor.push(curpolylinescoor);
}
var guid = guid;
var fItem = {
"geometry": {
"coordinates": polylinescoor,
"type": "LineString"
},
"properties": {
"_gx_style": guid
},
"type": "Feature"
};
geojsonStyles[guid] = {
"strokeColor": t.options.color,
"strokeDashstyle": "solid",
"strokeLinecap": "round",
"strokeOpacity": 1,
"strokeWidth": 2
};
geojsonFeatures.push(fItem);
} else if (t.shape == 'Poly' || t.shape == 'Rectangle') {
var polygonscoor = [];
polygonscoor[0] = [];
for (var i = 0; i <= t._latlngs[0].length; i++) {
if (i < t._latlngs[0].length) {
var curpolygonscoor = stringToParse([t._latlngs[0][i].lng, t._latlngs[0][i].lat]);
curpolygonscoor = lonlatToMercator(curpolygonscoor);
polygonscoor[0].push(curpolygonscoor);
} else {
var curpolygonscoor = stringToParse([t._latlngs[0][0].lng, t._latlngs[0][0].lat]);
curpolygonscoor = lonlatToMercator(curpolygonscoor);
polygonscoor[0].push(curpolygonscoor);
}
}
var fItem = {
"geometry": {
"coordinates": polygonscoor,
"type": "Polygon"
},
"properties": {
"_gx_style": guid
},
"type": "Feature"
};
geojsonStyles[guid] = {
"fillColor": t.options.color,
"fillOpacity": 0.5,
"strokeColor": t.options.color,
"strokeDashstyle": "solid",
"strokeLinecap": "round",
"strokeOpacity": 1,
"strokeWidth": 2
};
geojsonFeatures.push(fItem);
} else if (t.shape == 'Circle') {
//圆心
var allCirclePoint = [];
var center_lat = t._latlng.lat;
var center_lon = t._latlng.lng;
//半径
var radius = t.options.radius; //米
//转换定义 核心
var epsg_4326 = "+proj=longlat +datum=WGS84 +no_defs "
var esri_102016 = "+proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs"
var self_defined = "+proj=aeqd +lat_0=" + center_lat + "+lon_0=" + center_lon + "+x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs"
//生成圆平面点;
var pointArr = L.Util.getCirclePoint(0, 0, radius);
//圆的轮廓点转换为经纬度,当做GeoJSON来使用。
var circlePoints = [];
for (var k = 0; k < pointArr.length; k++) {
var item = pointArr[k];
//核心 将平面坐标转经纬度坐标
var xy = proj4(self_defined, epsg_4326, [item.x, item.y]);
circlePoints.push([
xy[0],
xy[1]
])
}
var polygonscoor = [];
polygonscoor[0] = [];
for (var i = 0; i < circlePoints.length + 1; i++) {
if (i < circlePoints.length) {
var curpolygonscoor = stringToParse([circlePoints[i][0], circlePoints[i][1]]);
curpolygonscoor = lonlatToMercator(curpolygonscoor);
polygonscoor[0].push(curpolygonscoor);
} else {
var curpolygonscoor = stringToParse([circlePoints[0][0], circlePoints[0][1]]);
curpolygonscoor = lonlatToMercator(curpolygonscoor);
polygonscoor[0].push(curpolygonscoor);
}
}
var fItem = {
"geometry": {
"coordinates": polygonscoor,
"type": "Polygon"
},
"properties": {
"_gx_style": guid
},
"type": "Feature"
};
geojsonStyles[guid] = {
"fillColor": t.options.color,
"fillOpacity": 0.5,
"strokeColor": t.options.color,
"strokeDashstyle": "solid",
"strokeLinecap": "round",
"strokeOpacity": 1,
"strokeWidth": 2
};
geojsonFeatures.push(fItem);
} else if (t.shape == 'Label') {
var curmarkerCoor = stringToParse([t._latlng.lng, t._latlng.lat]);
curmarkerCoor = lonlatToMercator(curmarkerCoor)
var fItem = {
"geometry": {
"coordinates": curmarkerCoor,
"type": "Point"
},
"properties": {
"_gx_style": guid
},
"type": "Feature"
};
if (t.options.icon) {
var cl = t.options.icon.options.className;
var scolor = $(".leaflet-marker-icon." + cl).css("color");
var slb = $(".leaflet-marker-icon." + cl).text();
var sfont = $(".leaflet-marker-icon." + cl).css("font-family");
if (scolor != undefined) {
geojsonStyles[guid] = {
"fontColor": scolor,
"fontFamily": sfont || 'microsoft yahei',
"fontSize": t.options.icon.options.iconSize + "px",
"fontStyle": "normal",
"fontWeight": "normal",
"label": t.zhuji || slb,
"labelAlign": "cm",
"labelXOffset": "-25.0",
"labelYOffset": "-35.0",
};
console.log(guid)
console.log(geojsonStyles[guid])
geojsonFeatures.push(fItem);
}
} else {
geojsonStyles[guid] = {
"fontColor": t.options.Oc,
"fontFamily": t.options.Off,
"fontSize": t.options.Ofz + "px",
"fontStyle": "normal",
"fontWeight": "normal",
"label": t.options.txt,
"labelAlign": "cm",
"labelXOffset": "-25.0",
"labelYOffset": "-35.0",
};
geojsonFeatures.push(fItem);
}
}
})
geojsonStyles.styleProperty = "_gx_style";
geojsonStyles.version = 1;
var curpostData = {
"outputFormat": "png",
"attributes": {
"description": postData.mapshotcopyright,
//"northArrowDef": nad,
"map": {
"center": mapcenter,
"dpi": 72,
"layers": [{
"geoJson": {
"features": geojsonFeatures,
"type": "FeatureCollection"
},
"style": geojsonStyles,
"type": "geojson"
}, {
// "baseURL": map23DConfig.tileServerUrl + "/" + postData.guid + "?l={z}&x={x}&y={y}",
"baseURL": map23DConfig.tileServerFo3DUrl + "/" + postData.guid + "?l={z}&x={x}&y={y}",
"imageExtension": "png",
"type": "OSM"
}],
"projection": "EPSG:3857",
"rotation": 0,
"scale": scale,
"useAdjustBounds": true
// "height":20
},
"title": postData.mapshotName,
//"scalebar": scb
},
"layout": "A4 landscape"
}
if (!$(".zhengshiDl .blc").is(':checked')) {
curpostData.attributes.scalebar = {
"barSize": 0,
"padding": 0,
"backgroundColor": "rgba(255,255,255,0.001)",
"barBgColor": "rgba(255,255,255,0.001)",
"color": "rgba(255,255,255,0.001)",
"fontColor": "rgba(255,255,255,0.001)"
}
}
if (!$(".zhengshiDl .zbz").is(':checked')) {
curpostData.attributes.northArrowDef = {
"backgroundColor": "rgba(255,255,255,0.001)",
"graphic": onemapUrlConfig.siteUrl + "/images/layout/0.png"
}
}
return postData = JSON.stringify(curpostData);
};
function updateWaitingMsg(startTime, data) {
var elapsed = Math.floor((new Date().getTime() - startTime) / 100);
var time = '';
if (elapsed > 5) {
time = (elapsed / 10) + " sec";
}
ONEMAP.C.publisher.publish({ type: 'success', message: '等候时间' + time }, 'noteBar::add');
}
//经纬度转魔卡托
function lonlatToMercator(lonlat) {
var mercator = [];
var x = lonlat[0] * 20037508.34 / 180;
var y = Math.log(Math.tan((90 + lonlat[1]) * Math.PI / 360)) / (Math.PI / 180);
y = y * 20037508.34 / 180;
mercator.push(x);
mercator.push(y);
return mercator;
}
function stringToParse(lnglat) {
var x = JSON.parse(lnglat[0]);
var y = JSON.parse(lnglat[1]);
var parsecoor = [x, y];
return parsecoor;
}
function mapShotPostData(postData) {
modValue.postData = postData;
var LTpx = map2DViewer.map.project(
new L.LatLng(JSON.parse(postData.bbox)[1], JSON.parse(postData.bbox)[0]),
postData.zoom
);
var RBpx = map2DViewer.map.project(
new L.LatLng(JSON.parse(postData.bbox)[3], JSON.parse(postData.bbox)[2]),
postData.zoom
);
var countDownTF = parseInt(((RBpx.x - LTpx.x) * (RBpx.y - LTpx.y)) / (5120 * 5120));
if (countDownTF > onemapUrlConfig.mapShotMaxPicCount) {
var xiangsu = parseInt(5120 * Math.sqrt(onemapUrlConfig.mapShotMaxPicCount));
$('#mapShotDownload p').html('地图拼接下载像素超过了' + xiangsu + '×' + xiangsu + '像素,请缩小截图下载区域
' +
'修改区域')
$('#mapShotDownload').show();
return false;
}
$('#mapShotDownload').show();
var nDate = new Date();
modValue.time_stamp = nDate.getTime();
var url = onemapUrlConfig.mapShotDownServerUrl + '/puzzles/?bbox=' + postData.bbox + '&zoom=' + postData.zoom + '&type=' + postData.guid + '&ext=' + postData.ext + '&time_stamp=' + modValue.time_stamp + '&name=' + encodeURI(postData.name);
$.ajax({
type: "get",
url: url,
dataType: 'jsonp',
jsonp: 'callback',
success: function(data) {
//modValue._loopGetResult({ajaxKey:'1'});
}
});
setTimeout(function() {
loopGetResult({ ajaxKey: modValue.time_stamp });
}, 1000);
};
function againMapShotPostData() {
mapShotPostData(modValue.postData);
}
function loopGetResult(options) {
$.ajax({
url: onemapUrlConfig.mapShotDownServerUrl + '/processing/' + modValue.time_stamp,
type: "get",
dataType: 'jsonp',
jsonp: 'callback',
success: function(data) {
if (data.processing == '') {
$('#mapShotDownload p').html('服务器处理失败,请重试!
再次提交');
}
if (data.processing.length < 3) {
if (modValue.loopAjaxTimeOut.hasOwnProperty(options.ajaxKey)) {
clearTimeout(modValue.loopAjaxTimeOut[options.ajaxKey]);
}
$('#mapShotDownload p').html('服务器正在截图,截图进度 ' + data.processing + ' %.
取消截图');
modValue.loopAjaxTimeOut[options.ajaxKey] = setTimeout(function() {
loopGetResult(options);
}, 1000);
} else if (data.processing == '100') {
if (modValue.loopAjaxTimeOut.hasOwnProperty(options.ajaxKey)) {
clearTimeout(modValue.loopAjaxTimeOut[options.ajaxKey]);
}
$('#mapShotDownload p').html('服务器已完成截图,正在进行打包.
取消截图');
modValue.loopAjaxTimeOut[options.ajaxKey] = setTimeout(function() {
loopGetResult(options);
}, 1000);
} else {
delete modValue.loopAjaxTimeOut[options.ajaxKey];
//获取最终结果
$('#mapShotDownload p').html('服务器截图完成,点击下载!
继续截图退出截图')
//alert(data);
}
}
});
};
function continueMapShot() {
if (modValue.loopAjaxTimeOut.hasOwnProperty(modValue.time_stamp)) {
clearTimeout(modValue.loopAjaxTimeOut[modValue.time_stamp]);
}
$('#mapShotDownload').hide().html('正在提交截图数据到服务器
');
}
function exitMapShot() {
$('#mapshotScreen').click();
modValue.mapShotControl.remove();
$('#mapShotDownload').hide()
}
function mapChange() {
var centerlng = (map2DViewer.map.getCenter().lng).toFixed(5);
var centerlat = (map2DViewer.map.getCenter().lat).toFixed(5);
$(".zhengshiDl #mapfishCenter").html("纬度:" + centerlat + ",经度:" + centerlng);
}
/**
* [getPaperBounds description]
* 根据中心点经纬度和纸张大小获取纸张经纬度范围
* @return {[type]} [description]
*/
function getPaperBounds(center, width, height,zoom) {
//中心点经纬度转墨卡托
var centerMercator = L.Util.transformMercator({
x: center.lng,
y: center.lat
})
//根据纸张大小和所选比例尺等级确定墨卡托范围
var scale = modValue.scaleMap[zoom-1];
var scaleWidth = scale * width /1000 / 2;
var scaleHeight = scale * height /1000 / 2;
var NElatlng = {
X: centerMercator.x + scaleWidth,
Y: centerMercator.y + scaleHeight
}
var SWlatlng = {
X: centerMercator.x - scaleWidth,
Y: centerMercator.y - scaleHeight
}
NElatlng = L.Util.formMercatorToLatlng(NElatlng);
SWlatlng = L.Util.formMercatorToLatlng(SWlatlng);
return showSTLayer({
zoom:zoom,
bounds:{
_northEast:{
lat:NElatlng.Y,
lng:NElatlng.X
},
_southWest:{
lat:SWlatlng.Y,
lng:SWlatlng.X
}
}
})
}
function showSTLayer(options) {
var offsetX = modValue.offsetX[options.zoom];
var offsetY = modValue.offsetY[options.zoom];
var startSW = {
lat: (parseInt(options.bounds._southWest.lat * 3600 / offsetY) - 1) * offsetY,
lng: (parseInt(options.bounds._southWest.lng * 3600 / offsetX) - 1) * offsetX
};
var startNE = {
lat: (parseInt(options.bounds._northEast.lat * 3600 / offsetY) + 1) * offsetY,
lng: (parseInt(options.bounds._northEast.lng * 3600 / offsetX) + 1) * offsetX
};
var polylineArry = [];
var markerArry = [];
//todo 这里需要做下优化 优化内容: 经纬度坐标文字更新和画线更新分离开来,让地图移动的时候让文字始终靠在界面边上
for (var i = startSW.lat; i < startNE.lat; i += offsetY) {
polylineArry.push([
[i / 3600, startSW.lng / 3600],
[i / 3600, startNE.lng / 3600]
])
//左
if (L.Util.verifyLatLng(i / 3600, options.bounds._southWest.lng)) {
markerArry.push({
latlng:[i / 3600, options.bounds._southWest.lng],
title:formatHMS([i, options.bounds._southWest.lng*3600]).lat,
offset:[60,0]
})
}
//右
if (L.Util.verifyLatLng(i / 3600, options.bounds._northEast.lng)) {
markerArry.push({
latlng:[i / 3600, options.bounds._northEast.lng],
title:formatHMS([i, options.bounds._northEast.lng*3600]).lat,
offset:[-10,0]
})
}
}
for (var ii = startSW.lng; ii < startNE.lng; ii += offsetX) {
polylineArry.push([
[startSW.lat / 3600, ii / 3600],
[startNE.lat / 3600, ii / 3600]
])
if (L.Util.verifyLatLng(options.bounds._southWest.lat, ii / 3600)) {
markerArry.push({
latlng:[options.bounds._southWest.lat, ii / 3600],
title:formatHMS([options.bounds._southWest.lng*3600, ii]).lng,
offset:[0,-60]
})
}
if (L.Util.verifyLatLng(options.bounds._northEast.lat, ii / 3600)) {
markerArry.push({
latlng:[options.bounds._northEast.lat, ii / 3600],
title:formatHMS([options.bounds._northEast.lng*3600, ii]).lng,
offset:[0,90]
})
}
}
return {
polylineArry:polylineArry,
markerArry:markerArry
}
}
/**
* 分格式化
* @param {[type]} latlng [分]
* @return {[type]} [description]
*/
function formatHMS(latlng){
var lat = latlng.hasOwnProperty('lat')?latlng.lat:latlng[0];
var lng = latlng.hasOwnProperty('lng')?latlng.lng:latlng[1];
function setHMS(f){
var h = parseInt(f/3600);
var m = parseInt((f-h*3600)/60);
var s = parseInt((f-h*3600-m*60));
if(m.toString().length == 1){
m = '0' + m.toString();
}
if(s.toString().length == 1){
s = '0' + s.toString();
}
return h + '\u00b0' + m + '\u2032' + s + '\u2033';
}
var nLat = '';
var nLng = '';
if (lat < 0) {
nLat = setHMS(lat * -1)+'S';
} else {
nLat = setHMS(lat)+'N';
}
if (lng < 0) {
nLng = setHMS(lng * -1)+'W';
} else {
nLng = setHMS(lng)+'E';
}
return {lat:nLat,lng:nLng};
};
/**
* 注册监听
*/
function subscribe() {
ONEMAP.C.publisher.subscribe(remove, 'tools:active');
ONEMAP.C.publisher.subscribe(mapShotPostData, 'mapShot:postData');
ONEMAP.C.publisher.subscribe(mapfishPostData, 'mapFish:postData');
ONEMAP.C.publisher.subscribe(mapChange, 'mapChange');
};
function mapfishInit() {
var baseMapObj = {
translate: null,
guid: null
}
baseMapObj.guid = ONEMAP.M.mapHolder.modValue.mainLayers;
if (baseMapObj.guid === 'gm') {
baseMapObj.translate = '交通图';
baseMapObj.guid = 'gm';
}
if (baseMapObj.guid === 'gr') {
baseMapObj.translate = '影像图';
baseMapObj.guid = 'gr';
}
if (baseMapObj.guid === 'gr') {
baseMapObj.translate = '影像叠加地名图';
baseMapObj.guid = 'gr';
}
if (baseMapObj.guid === 'gt') {
baseMapObj.translate = '地势图';
baseMapObj.guid = 'gt';
}
$(".zhengshiDl").addClass('active');
$(".zhengshiDl .name").attr("placeholder", baseMapObj.translate)
$(".zhengshiDl .bili").val(map2DViewer.map.getZoom());
var centerlng = (map2DViewer.map.getCenter().lng).toFixed(5);
var centerlat = (map2DViewer.map.getCenter().lat).toFixed(5);
$(".zhengshiDl #mapfishCenter").html("纬度:" + centerlat + ",经度:" + centerlng);
$(".zhengshiDl .subdiv button").off("click").on("click", function() {
postScreenMapFishInfo(baseMapObj);
})
}
function postScreenMapFishInfo(curLayerObj) {
var centerlng = (map2DViewer.map.getCenter().lng).toFixed(5) / 1;
var centerlat = (map2DViewer.map.getCenter().lat).toFixed(5) / 1;
newdata = new Date();
year = newdata.getFullYear();
month = newdata.getMonth() + 1;
day = newdata.getDate().toString();
var hour = newdata.getHours().toString();
var mintes = newdata.getMinutes().toString();
var second = newdata.getSeconds().toString();
if (month < 10) {
// month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
if (hour < 10) {
hour = "0" + hour;
}
if (mintes < 10) {
mintes = "0" + mintes;
}
if (second < 10) {
second = "0" + second;
}
var time = year + "年" + month + "月" + day + "日 " + hour + ":" + mintes + ":" + second;
if (curLayerObj.guid == "gr") {
curLayerObj.guid = 'gh';
}
var svname = $(".zhengshiDl .name").val();
if (svname == "") {
svname = curLayerObj.translate;
}
var svzoom = $('.zhengshiDl .bili option:selected').val();
var svimgtype = $(".zhengshiDl .geshi option:selected").val();
// $(_this.selectZoom).val()
var postDataMapfish = {
center: [centerlng, centerlat],
name: svname,
zoom: svzoom, //_this.selectZoom.value
guid: curLayerObj.guid,
ext: svimgtype, //'png'
mapshotName: svname, //_this.curLayerObj.translate
mapshotcopyright: time
}
ONEMAP.C.publisher.publish(postDataMapfish, 'mapFish:postData');
}
/**
* 功能移除
*/
function remove(options) {
if (options.modName == 'toolMapShot') {
if ($('.tools-mapshot').hasClass('cur')) {
$('.tools-mapshot').removeClass('cur');
modValue.mapShotControl.remove();
} else {
$('.tools-mapshot').addClass('cur');
$('.tools-msAll').removeClass('cur');
$(".zhengshiDl").removeClass('active')
modValue.mapShotControl.init();
}
} else if (options.modName == 'msAll') {
if ($('.tools-msAll').hasClass('cur')) {
$('.tools-msAll').removeClass('cur');
$(".zhengshiDl").removeClass('active');
modValue.mapShotControl.remove();
} else {
$('.tools-msAll').addClass('cur');
$('.tools-mapshot').removeClass('cur');
$('#mapHolder .leaflet-mapshot-info').hide()
modValue.mapShotControl.remove();
mapfishInit();
}
} else {
$('.tools-mapshot').removeClass('cur')
$('.tools-msAll').removeClass('cur');
$(".zhengshiDl").removeClass('active')
modValue.mapShotControl.remove();
}
};
return ONEMAP.M.toolMapShot = {
init: init,
continueMapShot: continueMapShot,
exitMapShot: exitMapShot
}
});