;(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)