(function (window, mars3d) {
|
|
//全局中间变量
|
let currJD;
|
let currWD;
|
let currGD;
|
|
//创建widget类,需要继承BaseWidget
|
class MyWidget extends mars3d.widget.BaseWidget {
|
//外部资源配置
|
get resources () {
|
return ["view.css"];
|
}
|
//弹窗配置
|
get view () {
|
return {
|
type: "divwindow",
|
url: "view.html",
|
windowOptions: {
|
width: 300,
|
height: 260,
|
},
|
};
|
}
|
|
//每个窗口创建完成后调用
|
winCreateOK (opt, result) {
|
|
var point = this.map.getCenter();
|
point.format();
|
currJD = point.lng;
|
currWD = point.lat;
|
currGD = point.alt;
|
|
this.chooseEvent() //事件处理
|
this.updateTen();
|
}
|
//激活插件
|
activate () {
|
//单击地图事件
|
$("#btnSelectPoint").click(() => {
|
this.map.once(mars3d.EventType.click, this.onMapClick, this);
|
})
|
|
}
|
//释放插件
|
disable () {
|
//释放单击地图事件
|
this.map.off(mars3d.EventType.click, this.onMapClick, this);
|
|
if (this.graphic) {
|
this.map.graphicLayer.removeGraphic(this.graphic, true);
|
this.graphic = null;
|
}
|
}
|
|
onMapClick (event) {
|
var cartesian = event.cartesian;
|
if (cartesian) {
|
var point = mars3d.LatLngPoint.fromCartesian(cartesian);
|
|
point.format();
|
currJD = point.lng;
|
currWD = point.lat;
|
currGD = point.alt;
|
|
this.updateMarker(point);
|
|
this.updateTen();
|
|
}
|
}
|
//点击地图坐标更新
|
updateMarker (position, iscenter) {
|
if (this.graphic) {
|
this.graphic.position = position;
|
} else {
|
this.graphic = new mars3d.graphic.BillboardEntity({
|
position: position,
|
style: {
|
image: this.path + "img/marker.png",
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // default: CENTER
|
scale: 0.6,
|
},
|
});
|
this.map.graphicLayer.addGraphic(this.graphic);
|
}
|
|
if (iscenter) {
|
this.map.flyToGraphic(this.graphic, { radius: 2000 });
|
}
|
}
|
|
|
//===============================================================================
|
|
chooseEvent () {
|
$("#txtLngTen,#txtLatTen,#txtLatAlt").change(() => {
|
this.changeTen()
|
})
|
|
$("#txtLngDegree,#txtDmsAlt,#txtLngMinute,#txtLngSecond,#txtLatDegree,#txtLatMinute,#txtLatSecond").change(() => {
|
this.changeDfm()
|
})
|
|
$("#txtGk3X,#txtGk3Y,#txtGk3Alt").change(() => {
|
this.change3GKZone()
|
})
|
|
$("#btnCenterXY").click(() => {
|
if (currJD > 180 || currJD < -180) {
|
haoutil.alert("请输入有效的经度值!");
|
return;
|
}
|
if (currWD > 90 || currWD < -90) {
|
haoutil.alert("请输入有效的纬度值!");
|
return;
|
}
|
let point = new mars3d.LatLngPoint(Number(currJD), Number(currWD), Number(currGD));
|
|
this.updateMarker(point, true);
|
});
|
|
$('input:radio[name="rdoType"]').change(() => {
|
let selectType = $('input:radio[name="rdoType"]:checked').val()
|
switch (selectType) {
|
default:
|
//十进制
|
$(".viewTen").show();
|
$(".viewDms").hide();
|
$(".viewGk").hide();
|
this.updateTen();
|
break;
|
case "2": //度分秒
|
$(".viewDms").show();
|
$(".viewTen").hide();
|
$(".viewGk").hide();
|
this.updataDfm();
|
break;
|
case "3": //CGCS2000
|
$(".viewTen").hide();
|
$(".viewDms").hide();
|
$(".viewGk").show();
|
this.updata3GKZone();
|
break;
|
}
|
});
|
|
}
|
|
//更新:十进制
|
updateTen () {
|
$("#txtLngTen").val(currJD.toFixed(6));
|
$("#txtLatTen").val(currWD.toFixed(6));
|
$("#txtLatAlt").val(currGD.toFixed(1));
|
}
|
// 修改了:十进制
|
changeTen () {
|
currJD = Number($("#txtLngTen").val() || 0); //获取经度
|
currWD = Number($("#txtLatTen").val() || 0); //获取纬度
|
currGD = Number($("#txtLatAlt").val() || 0); //高度
|
}
|
|
//更新:度分秒
|
updataDfm () {
|
let tenJD = mars3d.PointTrans.degree2dms(currJD);
|
$("#txtLngDegree").val(tenJD.degree);
|
$("#txtLngMinute").val(tenJD.minute);
|
$("#txtLngSecond").val(tenJD.second);
|
|
let tenWD = mars3d.PointTrans.degree2dms(currWD);
|
$("#txtLatDegree").val(tenWD.degree);
|
$("#txtLatMinute").val(tenWD.minute);
|
$("#txtLatSecond").val(tenWD.second);
|
|
$("#txtDmsAlt").val(currGD);
|
}
|
|
//修改了:度分秒
|
changeDfm () {
|
let jd_du = Number($("#txtLngDegree").val() || 0); //获取
|
let jd_fen = Number($("#txtLngMinute").val() || 0);
|
let jd_miao = Number($("#txtLngSecond").val() || 0);
|
currJD = mars3d.PointTrans.dms2degree(jd_du, jd_fen, jd_miao);
|
|
let wd_du = Number($("#txtLatDegree").val() || 0); //获取
|
let wd_fen = Number($("#txtLatMinute").val() || 0);
|
let wd_miao = Number($("#txtLatSecond").val() || 0);
|
currWD = mars3d.PointTrans.dms2degree(wd_du, wd_fen, wd_miao);
|
|
currGD = Number($("#txtDmsAlt").val() || 0); //高度
|
}
|
|
//更新:2000平面坐标三分度
|
updata3GKZone () {
|
var zone3 = mars3d.PointTrans.proj4Trans([currJD, currWD], mars3d.CRS.EPSG4326, mars3d.CRS.CGCS2000_GK_Zone_3); //十进制转2000平面三分度
|
$("#txtGk3X").val(mars3d.Util.formatNum(zone3[0], 1));
|
$("#txtGk3Y").val(mars3d.Util.formatNum(zone3[1], 1));
|
$("#txtGk3Alt").val(currGD);
|
}
|
|
//修改了:2000平面坐标三分度
|
change3GKZone () {
|
let jd = Number($("#txtGk3X").val()); //获取
|
let wd = Number($("#txtGk3Y").val());
|
var gk3 = mars3d.PointTrans.proj4Trans([jd, wd], mars3d.CRS.CGCS2000_GK_Zone_3, mars3d.CRS.EPSG4326);
|
currJD = gk3[0];
|
currWD = gk3[1];
|
currGD = Number($("#txtGk3Alt").val() || 0); //高度
|
}
|
|
|
|
}
|
|
//注册到widget管理器中。
|
mars3d.widget.bindClass(MyWidget);
|
|
//每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。
|
})(window, mars3d);
|