116 lines
3.7 KiB
JavaScript
116 lines
3.7 KiB
JavaScript
|
|
||
|
//模块:
|
||
|
xjsdk.widget.bindClass(xjsdk.widget.BaseWidget.extend({
|
||
|
options: {
|
||
|
resources: ['view.css'],
|
||
|
//弹窗
|
||
|
view: {
|
||
|
type: "divwindow",
|
||
|
url: "view.html",
|
||
|
windowOptions: {
|
||
|
width: 210,
|
||
|
height: 210
|
||
|
}
|
||
|
},
|
||
|
},
|
||
|
//每个窗口创建完成后调用
|
||
|
winCreateOK: function (opt, result) {
|
||
|
var xy = this.getMapCenter();
|
||
|
this.showLatlng(xy);
|
||
|
|
||
|
var that = this;
|
||
|
$("#btnCenterXY").click(function () {
|
||
|
var jd = $("#point_jd").val();
|
||
|
var wd = $("#point_wd").val();
|
||
|
var height = $("#point_height").val();
|
||
|
|
||
|
var val = { x: Number(jd), y: Number(wd), z: Number(height) };
|
||
|
|
||
|
that.centerAt(val, true);
|
||
|
});
|
||
|
},
|
||
|
markerXY: null,
|
||
|
handler: null,
|
||
|
//激活插件
|
||
|
activate: function () {
|
||
|
var that = this;
|
||
|
this.handler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
|
||
|
this.handler.setInputAction(function (movement) {
|
||
|
//var cartesian = that.viewer.camera.pickEllipsoid(movement.position, that.viewer.scene.globe.ellipsoid);
|
||
|
var cartesian = xjsdk.point.getCurrentMousePosition(that.viewer.scene, movement.position);
|
||
|
if (cartesian) {
|
||
|
var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
|
||
|
|
||
|
var jd = Number(Cesium.Math.toDegrees(cartographic.longitude).toFixed(6));
|
||
|
var wd = Number(Cesium.Math.toDegrees(cartographic.latitude).toFixed(6));
|
||
|
var height = Number(cartographic.height.toFixed(1));
|
||
|
|
||
|
var val = { x: jd, y: wd, z: height };
|
||
|
that.updateMarker(val);
|
||
|
|
||
|
var wgsPoint = that.viewer.xjsdk.point2wgs({ x: jd, y: wd }); //坐标转换为wgs
|
||
|
jd = wgsPoint.x;
|
||
|
wd = wgsPoint.y;
|
||
|
|
||
|
that.showLatlng({ x: jd, y: wd, z: height });
|
||
|
}
|
||
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
||
|
//$('.cesium-viewer').css('cursor', 'crosshair');
|
||
|
|
||
|
},
|
||
|
//释放插件
|
||
|
disable: function () {
|
||
|
//$('.cesium-viewer').css('cursor', '');
|
||
|
this.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
||
|
this.handler.destroy();
|
||
|
|
||
|
if (this.markerXY) {
|
||
|
this.viewer.entities.remove(this.markerXY);
|
||
|
this.markerXY = null;
|
||
|
}
|
||
|
},
|
||
|
getMapCenter: function () {
|
||
|
var point = xjsdk.point.getCenter(this.viewer, true);
|
||
|
return point;
|
||
|
},
|
||
|
centerAt: function (_latlng, iscenter) {
|
||
|
var mpt = this.viewer.xjsdk.point2map(_latlng); //坐标转换为map一致的坐标系
|
||
|
this.updateMarker(mpt, iscenter);
|
||
|
},
|
||
|
updateMarker: function (val, iscenter) {
|
||
|
var position = Cesium.Cartesian3.fromDegrees(val.x, val.y, (val.z || 0));
|
||
|
|
||
|
if (this.markerXY == null) {
|
||
|
this.markerXY = this.viewer.entities.add({
|
||
|
name: '坐标拾取',
|
||
|
position: position,
|
||
|
billboard: {
|
||
|
image: this.path + "img/marker.png",
|
||
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
||
|
verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // default: CENTER
|
||
|
scale: 0.6
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
else {
|
||
|
this.markerXY.position = position;
|
||
|
}
|
||
|
|
||
|
if (iscenter) {
|
||
|
this.viewer.xjsdk.centerAt({ x: val.x, y: val.y });
|
||
|
}
|
||
|
|
||
|
},
|
||
|
showLatlng: function (xy) {
|
||
|
$("#point_jd").val(xy.x.toFixed(6));
|
||
|
$("#point_wd").val(xy.y.toFixed(6));
|
||
|
$("#point_height").val(xy.z.toFixed(0));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}));
|