(function (window, mars3d) { //创建widget类,需要继承BaseWidget class MyWidget extends mars3d.widget.BaseWidget { //外部资源配置 get resources() { return ["view.css"]; } //弹窗配置 get view() { return { type: "append", url: "view.html", parent: "body", }; } //每个窗口创建完成后调用 winCreateOK(opt, result) { var that = this; $("#btn_streetscapeBar_close").click(function () { that.disableBase(); }); } //激活插件 activate() { var point = this.config.point || { lat: 31.833789, lng: 117.183995 }; this.updateMarker(point); var pointBd = this.getBaiduPoint(point); var inhtml = `
`; $("body").append(inhtml); $("#centerDiv").css({ position: "", height: "100%", width: "50%", }); $(".no-print-view").hide(); //单击地图事件 this.map.on(mars3d.EventType.click, this.onMapClick, this); $(".cesium-viewer").css("cursor", "crosshair"); } //释放插件 disable() { //释放单击地图事件 this.map.off(mars3d.EventType.click, this.onMapClick, this); $(".cesium-viewer").css("cursor", ""); if (this.graphic) { this.map.graphicLayer.removeGraphic(this.graphic, true); this.graphic = null; } $("#streetscapeView").remove(); $("#centerDiv").css({ position: "", height: "100%", width: "100%", }); $(".no-print-view").show(); } onMapClick(event) { var cartesian = event.cartesian; if (cartesian) { var point = mars3d.LatLngPoint.fromCartesian(cartesian); this.updateMarker(point); //点击地图的事件,触发街景改变 var pointBd = this.getBaiduPoint(point); var streetscapeFrame = document.getElementById("streetscape"); if (streetscapeFrame && streetscapeFrame.contentWindow.setPosition) { streetscapeFrame.contentWindow.setPosition(pointBd); //根据经纬度坐标展示全景图 } } } getBaiduPoint(point) { let pointbd = mars3d.PointTrans.wgs2bd([point.lng, point.lat]); return { lng: pointbd[0], lat: pointbd[1] }; } updateMarker(position) { if (this.graphic) { this.graphic.position = position; } else { this.graphic = new mars3d.graphic.BillboardEntity({ position: position, style: { image: this.path + "img/streetimg.png", scale: 1, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, clampToGround: true, }, }); this.map.graphicLayer.addGraphic(this.graphic); } this.map.flyToGraphic(this.graphic, { radius: 800 }); } } //注册到widget管理器中。 window.streetscapeWidget = mars3d.widget.bindClass(MyWidget); //每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。 })(window, mars3d);