@ -33,7 +33,6 @@ class CircleObject extends Base {
* @param options.line.width=3 {number} 边框宽
* @param options.line.color="#ff000080" {string} 边框颜色
* @param options.heightMode=2{number} 高度模式( 0: 海拔高度; 1: 相对地表; 2: 依附模式)
* @param options.areaUnit='平方米' {string} 面积单位
* @param options.customView {object} 默认视角
* @param options.customView.orientation {object} 默认视角方位
* @param options.customView.orientation.heading {number} 航向角
@ -87,7 +86,6 @@ class CircleObject extends Base {
this . options . line = options . line || { }
this . options . line . width = ( ( this . options . line . width || this . options . line . width === 0 ) ? this . options . line . width : 3 )
this . options . line . color = this . options . line . color || 'rgba(255, 0, 0, 1)'
this . options [ 'area-unit' ] = options [ 'area-unit' ] || '平方米'
options . label = options . label || { }
this . _elms = { } ;
this . options . label = {
@ -108,13 +106,13 @@ class CircleObject extends Base {
this . options . attribute = options . attribute || { }
this . options . attribute . link = this . options . attribute . link || { }
this . options . attribute . link . content = this . options . attribute . link . content || [ ]
this . options . attribute . vr = this . options . attribute . vr || { }
this . options . attribute . vr . content = this . options . attribute . vr . content || [ ]
this . options . attribute . camera = this . options . attribute . camera || { }
this . options . attribute . camera . content = this . options . attribute . camera . content || [ ]
this . options . attribute . goods = this . options . attribute . goods || { }
this . options . attribute . goods . content = this . options . attribute . goods . content || [ ]
this . options . attributeType = options . attributeType || 'richText'
delete this . options . attribute . camera
delete this . options . attribute . vr
delete this . options . attribute . goods
this . event = new MouseEvent ( this . sdk )
this . nodePoints = [ ]
this . operate = { }
@ -140,7 +138,7 @@ class CircleObject extends Base {
return
}
let heightModeName = ''
CircleObject . closeNodeEdit ( this )
this . closeNodeEdit ( )
let ground = false
let disabled = false
this . renewPositions ( )
@ -330,45 +328,6 @@ class CircleObject extends Base {
} )
}
get area ( ) {
return this . options . area
}
set area ( v ) {
this . options . area = v
this . _elms . area && this . _elms . area . forEach ( ( item ) => {
item . value = v
} )
}
get areaUnit ( ) {
return this . options [ 'area-unit' ]
}
set areaUnit ( v ) {
this . options [ 'area-unit' ] = v
this . _elms . areaUnit && this . _elms . areaUnit . forEach ( ( item ) => {
item . value = v
} )
if ( this . options . areaByMeter ) {
switch ( v ) {
case '平方米' :
this . area = this . options . areaByMeter
break ;
case '平方千米' :
this . area = Number ( ( this . options . areaByMeter / 1000000 ) . toFixed ( 8 ) )
break ;
case '亩' :
this . area = Number ( ( this . options . areaByMeter / 666.6666667 ) . toFixed ( 4 ) )
break ;
case '公顷' :
this . area = Number ( ( this . options . areaByMeter / 10000 ) . toFixed ( 6 ) )
break ;
default :
this . area = this . options . areaByMeter
}
}
}
get labelShow ( ) {
return this . options . label . show
}
@ -580,320 +539,6 @@ class CircleObject extends Base {
}
}
get attributeType ( ) {
return this . options . attributeType
}
set attributeType ( v ) {
this . options . attributeType = v
this . _elms . attributeType && this . _elms . attributeType . forEach ( ( item ) => {
item . value = v
} )
let attributeContent = this . _DialogObject . _element . content . getElementsByClassName ( 'attribute-content' )
for ( let i = 0 ; i < attributeContent . length ; i ++ ) {
if ( attributeContent [ i ] . className . indexOf ( 'attribute-content-' + v ) > - 1 ) {
attributeContent [ i ] . style . display = 'block' ;
}
else {
attributeContent [ i ] . style . display = 'none' ;
}
}
}
get attributeLink ( ) {
return this . options . attribute . link . content
}
set attributeLink ( v ) {
this . options . attribute . link . content = v
if ( ! this . _DialogObject || ! this . _DialogObject . _element || ! this . _DialogObject . _element . content || this . _DialogObject . _element . content . getElementsByClassName ( 'attribute-content-link' ) . length == 0 ) {
return
}
let table = this . _DialogObject . _element . content . getElementsByClassName ( 'attribute-content-link' ) [ 1 ] . getElementsByClassName ( 'table' ) [ 0 ]
let tableContent = table . getElementsByClassName ( 'table-body' ) [ 0 ]
tableContent . innerHTML = ''
if ( this . options . attribute . link . content . length > 0 ) {
table . getElementsByClassName ( 'table-empty' ) [ 0 ] . style . display = 'none'
}
else {
table . getElementsByClassName ( 'table-empty' ) [ 0 ] . style . display = 'flex'
}
for ( let i = 0 ; i < this . options . attribute . link . content . length ; i ++ ) {
let tr = `
<div class="tr">
<div class="td"> ` + this . options . attribute . link . content [ i ] . name + ` </div>
<div class="td"> ` + this . options . attribute . link . content [ i ] . url + ` </div>
<div class="td">
<button @click="linkEdit">编辑</button>
<button @click="linkDelete">删除</button>
</div>
</div> `
let trElm = document . createRange ( ) . createContextualFragment ( tr )
tableContent . appendChild ( trElm )
}
let item = tableContent . getElementsByClassName ( 'tr' )
let fun = {
linkEdit : async ( index ) => {
this . attributeLink = await this . options . attribute . link . content
let table = this . _DialogObject . _element . content . getElementsByClassName ( 'attribute-content-link' ) [ 1 ] . getElementsByClassName ( 'table' ) [ 0 ]
let tableContent = table . getElementsByClassName ( 'table-body' ) [ 0 ]
let item = tableContent . getElementsByClassName ( 'tr' )
for ( let i = 0 ; i < item . length ; i ++ ) {
if ( index === i ) {
let height = item [ i ] . offsetHeight
let html = `
<div class="td">
<input class="input" type="text">
</div>
<div class="td">
<textarea class="input link-edit" type="text"></textarea>
</div>
<div class="td">
<button @click="confirmEdit">确认</button>
<button @click="cancelEdit">取消</button>
</div> `
item [ i ] . innerHTML = html
let textareaElm = item [ i ] . getElementsByClassName ( 'link-edit' ) [ 0 ]
textareaElm . style . height = ( height - 10 ) + 'px'
let td = item [ i ] . getElementsByClassName ( 'td' )
td [ 0 ] . getElementsByClassName ( 'input' ) [ 0 ] . value = this . options . attribute . link . content [ index ] . name
td [ 1 ] . getElementsByClassName ( 'input' ) [ 0 ] . value = this . options . attribute . link . content [ index ] . url
let btn = item [ i ] . getElementsByTagName ( 'button' )
for ( let n = 0 ; n < btn . length ; n ++ ) {
if ( ! btn [ n ] || ! btn [ n ] . attributes ) {
continue
}
for ( let m of btn [ n ] . attributes ) {
if ( m . name === '@click' ) {
btn [ n ] . addEventListener ( 'click' , ( e ) => {
if ( typeof ( fun [ m . value ] ) === 'function' ) {
fun [ m . value ] ( { name : td [ 0 ] . getElementsByClassName ( 'input' ) [ 0 ] . value , url : td [ 1 ] . getElementsByClassName ( 'input' ) [ 0 ] . value } , i )
}
} ) ;
btn [ n ] . attributes . removeNamedItem ( m . name )
break
}
}
}
break
}
}
} ,
linkDelete : ( i ) => {
this . options . attribute . link . content . splice ( i , 1 )
this . attributeLink = this . options . attribute . link . content
} ,
confirmEdit : ( value , i ) => {
let name = value . name && value . name . replace ( /\s/g , "" )
let url = value . url && value . url . replace ( /\s/g , "" )
if ( name && url ) {
this . options . attribute . link . content [ i ] = value
}
else {
window . ELEMENT && window . ELEMENT . Message ( {
message : '名称或链接不能为空!' ,
type : 'warning' ,
duration : 1500
} ) ;
}
this . attributeLink = this . options . attribute . link . content
} ,
cancelEdit : ( ) => {
this . attributeLink = this . options . attribute . link . content
} ,
fileSelect : ( value , i ) => {
let fileElm = item [ i ] . getElementsByClassName ( 'file-select' ) [ 0 ]
fileElm . click ( )
fileElm . removeEventListener ( 'change' , fileSelect )
fileElm . addEventListener ( 'change' , fileSelect )
}
}
let fileSelect = ( event ) => {
if ( event . target . value ) {
let td = item [ event . target . getAttribute ( 'index' ) ] . getElementsByClassName ( 'td' )
td [ 1 ] . getElementsByClassName ( 'input' ) [ 0 ] . value = event . target . value
event . target . value = null
}
}
for ( let i = 0 ; i < item . length ; i ++ ) {
let btn = item [ i ] . getElementsByTagName ( 'button' )
for ( let n = 0 ; n < btn . length ; n ++ ) {
if ( ! btn [ n ] || ! btn [ n ] . attributes ) {
continue
}
for ( let m of btn [ n ] . attributes ) {
if ( m . name === '@click' ) {
btn [ n ] . addEventListener ( 'click' , ( e ) => {
if ( typeof ( fun [ m . value ] ) === 'function' ) {
fun [ m . value ] ( i )
}
} ) ;
btn [ n ] . attributes . removeNamedItem ( m . name )
break
}
}
}
}
}
get attributeCamera ( ) {
return this . options . attribute . camera . content
}
set attributeCamera ( v ) {
this . options . attribute . camera . content = v
}
get attributeVr ( ) {
return this . options . attribute . vr . content
}
set attributeVr ( v ) {
this . options . attribute . vr . content = v
if ( ! this . _DialogObject || ! this . _DialogObject . _element || ! this . _DialogObject . _element . content || this . _DialogObject . _element . content . getElementsByClassName ( 'attribute-content-vr' ) . length == 0 ) {
return
}
let table = this . _DialogObject . _element . content . getElementsByClassName ( 'attribute-content-vr' ) [ 1 ] . getElementsByClassName ( 'table' ) [ 0 ]
let tableContent = table . getElementsByClassName ( 'table-body' ) [ 0 ]
tableContent . innerHTML = ''
if ( this . options . attribute . vr . content . length > 0 ) {
table . getElementsByClassName ( 'table-empty' ) [ 0 ] . style . display = 'none'
}
else {
table . getElementsByClassName ( 'table-empty' ) [ 0 ] . style . display = 'flex'
}
for ( let i = 0 ; i < this . options . attribute . vr . content . length ; i ++ ) {
let tr = `
<div class="tr">
<div class="td"> ` + this . options . attribute . vr . content [ i ] . name + ` </div>
<div class="td"> ` + this . options . attribute . vr . content [ i ] . url + ` </div>
<div class="td">
<button @click="vrEdit">编辑</button>
<button @click="vrDelete">删除</button>
</div>
</div> `
let trElm = document . createRange ( ) . createContextualFragment ( tr )
tableContent . appendChild ( trElm )
}
let item = tableContent . getElementsByClassName ( 'tr' )
let fun = {
vrEdit : async ( index ) => {
this . attributeVr = await this . options . attribute . vr . content
let table = this . _DialogObject . _element . content . getElementsByClassName ( 'attribute-content-vr' ) [ 1 ] . getElementsByClassName ( 'table' ) [ 0 ]
let tableContent = table . getElementsByClassName ( 'table-body' ) [ 0 ]
let item = tableContent . getElementsByClassName ( 'tr' )
for ( let i = 0 ; i < item . length ; i ++ ) {
if ( index === i ) {
let height = item [ i ] . offsetHeight
let html = `
<div class="td">
<input class="input" type="text">
</div>
<div class="td">
<textarea class="input link-edit" type="text"></textarea>
</div>
<div class="td">
<button @click="confirmEdit">确认</button>
<button @click="cancelEdit">取消</button>
</div> `
item [ i ] . innerHTML = html
let textareaElm = item [ i ] . getElementsByClassName ( 'link-edit' ) [ 0 ]
textareaElm . style . height = ( height - 10 ) + 'px'
let td = item [ i ] . getElementsByClassName ( 'td' )
td [ 0 ] . getElementsByClassName ( 'input' ) [ 0 ] . value = this . options . attribute . vr . content [ index ] . name
td [ 1 ] . getElementsByClassName ( 'input' ) [ 0 ] . value = this . options . attribute . vr . content [ index ] . url
let btn = item [ i ] . getElementsByTagName ( 'button' )
for ( let n = 0 ; n < btn . length ; n ++ ) {
if ( ! btn [ n ] || ! btn [ n ] . attributes ) {
continue
}
for ( let m of btn [ n ] . attributes ) {
if ( m . name === '@click' ) {
btn [ n ] . addEventListener ( 'click' , ( e ) => {
if ( typeof ( fun [ m . value ] ) === 'function' ) {
fun [ m . value ] ( { name : td [ 0 ] . getElementsByClassName ( 'input' ) [ 0 ] . value , url : td [ 1 ] . getElementsByClassName ( 'input' ) [ 0 ] . value } , i )
}
} ) ;
btn [ n ] . attributes . removeNamedItem ( m . name )
break
}
}
}
break
}
}
} ,
vrDelete : ( i ) => {
this . options . attribute . vr . content . splice ( i , 1 )
this . attributeVr = this . options . attribute . vr . content
} ,
confirmEdit : ( value , i ) => {
let name = value . name && value . name . replace ( /\s/g , "" )
let url = value . url && value . url . replace ( /\s/g , "" )
if ( name && url ) {
this . options . attribute . vr . content [ i ] = value
}
else {
window . ELEMENT && window . ELEMENT . Message ( {
message : '名称或链接不能为空!' ,
type : 'warning' ,
duration : 1500
} ) ;
}
this . attributeVr = this . options . attribute . vr . content
} ,
cancelEdit : ( ) => {
this . attributeVr = this . options . attribute . vr . content
} ,
fileSelect : ( value , i ) => {
let fileElm = item [ i ] . getElementsByClassName ( 'file-select' ) [ 0 ]
fileElm . click ( )
fileElm . removeEventListener ( 'change' , fileSelect )
fileElm . addEventListener ( 'change' , fileSelect )
}
}
let fileSelect = ( event ) => {
if ( event . target . value ) {
let td = item [ event . target . getAttribute ( 'index' ) ] . getElementsByClassName ( 'td' )
td [ 1 ] . getElementsByClassName ( 'input' ) [ 0 ] . value = event . target . value
event . target . value = null
}
}
for ( let i = 0 ; i < item . length ; i ++ ) {
let btn = item [ i ] . getElementsByTagName ( 'button' )
for ( let n = 0 ; n < btn . length ; n ++ ) {
if ( ! btn [ n ] || ! btn [ n ] . attributes ) {
continue
}
for ( let m of btn [ n ] . attributes ) {
if ( m . name === '@click' ) {
btn [ n ] . addEventListener ( 'click' , ( e ) => {
if ( typeof ( fun [ m . value ] ) === 'function' ) {
fun [ m . value ] ( i )
}
} ) ;
btn [ n ] . attributes . removeNamedItem ( m . name )
break
}
}
}
}
}
get attributeGoods ( ) {
return this . options . attribute . goods . content
}
set attributeGoods ( v ) {
this . options . attribute . goods . content = v
}
static create ( that ) {
let fromDegreesArray = that . createCircle ( that . options . center , that . options . radius )
let ground
@ -914,9 +559,10 @@ class CircleObject extends Base {
ground = true
break
}
if ( ! that . options . label . position ) {
that. options. label . position = { lng : that . options. center. lng , lat : that . options. center. lat , alt : that . options. center. alt + height }
}
// if (!that.options.label.position) {
// that. options.label.position = { lng: that. options. center.lng, lat: that. options. center.lat, alt: that. options. center.alt + height }
// }
that . options . label . position = { lng : that . options . center . lng , lat : that . options . center . lat , alt : that . options . center . alt + height }
let material = Cesium . Color . fromCssColorString ( that . options . color )
if ( that . sdk . viewer . scene . mode === 2 ) {
@ -930,7 +576,7 @@ class CircleObject extends Base {
for ( let i = 0 ; i < fromDegreesArray . length ; i += 2 ) {
fromDegreesArray2 . push ( fromDegreesArray [ i ] , fromDegreesArray [ i + 1 ] , that . options . center . alt + height )
}
that . options . label . ground = ground
// that.options.label.ground = ground
that . positions = Cesium . Cartesian3 . fromDegreesArrayHeights ( fromDegreesArray2 )
positionsA = Cesium . Cartesian3 . fromDegreesArray ( fromDegreesArray )
that . entity = that . sdk . viewer . entities . add ( {
@ -953,23 +599,8 @@ class CircleObject extends Base {
} )
that . sdk . _entityZIndex ++
CircleObject . createLabel ( that )
that . options . areaByMeter = Number ( ( Cesium . Math . PI * that . options . radius * that . options . radius ) . toFixed ( 2 ) ) ;
switch ( that . options [ 'area-unit' ] ) {
case '平方米' :
that . options . area = that . options . areaByMeter
break ;
case '平方千米' :
that . options . area = Number ( ( that . options . areaByMeter / 1000000 ) . toFixed ( 8 ) )
break ;
case '亩' :
that . options . area = Number ( ( that . options . areaByMeter / 666.6666667 ) . toFixed ( 4 ) )
break ;
case '公顷' :
that . options . area = Number ( ( that . options . areaByMeter / 10000 ) . toFixed ( 6 ) )
break ;
default :
that . options . area = that . options . areaByMeter
}
that . areaByMeter = Number ( ( Cesium . Math . PI * that . options . radius * that . options . radius ) . toFixed ( 2 ) ) ;
that . areaChangeCallBack && that . areaChangeCallBack ( )
syncData ( that . sdk , that . options . id )
if ( that . options . show ) {
@ -995,12 +626,12 @@ class CircleObject extends Base {
scaleByDistance : that . options . label . scaleByDistance ,
near : that . options . label . near ,
far : that . options . label . far ,
ground : that . options . label . ground ,
} )
}
// 编辑框
async edit ( state ) {
return
let _this = this
this . originalOptions = this . deepCopyObj ( this . options )
@ -1492,8 +1123,6 @@ class CircleObject extends Base {
this . name = this . originalOptions . name
this . radius = this . originalOptions . radius
this . color = this . originalOptions . color
this . area = this . originalOptions . area
this . areaUnit = this . originalOptions [ 'area-unit' ]
this . labelShow = this . originalOptions . label . show
this . labelFontSize = this . originalOptions . label . fontSize
this . labelFontFamily = this . originalOptions . label . fontFamily
@ -1509,12 +1138,6 @@ class CircleObject extends Base {
this . lineColor = this . originalOptions . line . color
this . labelBackgroundColorStart = this . originalOptions . label . backgroundColor [ 0 ]
this . labelBackgroundColorEnd = this . originalOptions . label . backgroundColor [ 1 ]
this . attributeLink = this . options . attribute . link . content
this . attributeVr = this . options . attribute . vr . content
this . attributeCamera = this . options . attribute . camera . content
this . attributeGoods = this . options . attribute . goods . content
this . cameraSelect && this . cameraSelect ( )
this . goodsSelect && this . goodsSelect ( )
this . heightMode = this . originalOptions . heightMode
@ -1554,51 +1177,6 @@ class CircleObject extends Base {
await syncData ( this . sdk , this . options . id )
}
_addLink ( ) {
// document.getElementsByClassName
if ( this . _DialogObject . _element . content . getElementsByClassName ( 'link_add' ) [ 0 ] . value ) {
this . options . attribute . link . content . push ( {
name : '链接' ,
url : this . _DialogObject . _element . content . getElementsByClassName ( 'link_add' ) [ 0 ] . value
} )
this . _DialogObject . _element . content . getElementsByClassName ( 'link_add' ) [ 0 ] . value = ''
this . attributeLink = this . options . attribute . link . content
}
else {
this . Dialog . clickAddLink && this . Dialog . clickAddLink ( )
}
}
addAttributeLink ( link ) {
this . options . attribute . link . content . push ( {
name : '链接' ,
url : link
} )
this . attributeLink = this . options . attribute . link . content
}
_addRr ( ) {
if ( this . _DialogObject . _element . content . getElementsByClassName ( 'vr_add' ) [ 0 ] . value ) {
this . options . attribute . vr . content . push ( {
name : '全景图' ,
url : this . _DialogObject . _element . content . getElementsByClassName ( 'vr_add' ) [ 0 ] . value
} )
this . _DialogObject . _element . content . getElementsByClassName ( 'vr_add' ) [ 0 ] . value = ''
this . attributeVr = this . options . attribute . vr . content
}
else {
this . Dialog . clickAddVr && this . Dialog . clickAddVr ( )
}
}
addAttributeRr ( vr ) {
this . options . attribute . vr . content . push ( {
name : '全景图' ,
url : vr
} )
this . attributeVr = this . options . attribute . vr . content
}
/**
* 飞到
*/
@ -1803,6 +1381,11 @@ class CircleObject extends Base {
positions : { ... this . options . center }
}
this . positionEditing = false
if ( this . _positionEditingCallback ) {
this . _positionEditingCallback ( )
this . _positionEditingCallback = null
}
} )
this . event . mouse _right ( ( movement , cartesian ) => {
this . positionEditing = false
@ -1866,88 +1449,104 @@ class CircleObject extends Base {
return this . operate . positionEditing
}
static node Edit( that , cb = ( ) => { } ) {
that . positionEditing = fals e
openPosition Editing ( cd ) {
this . positionEditing = tru e
this . _positionEditingCallback = cd
}
get areaChangeCallBack ( ) {
return this . _areaChangeCallBack
}
set areaChangeCallBack ( cd ) {
this . _areaChangeCallBack = cd
}
nodeEdit ( cb = ( ) => { } ) {
this . positionEditing = false
if ( YJ . Measure . GetMeasureStatus ( ) ) {
} else {
that . event && that . event . destroy ( )
that . event = new MouseE vent( that . sdk )
let _this = this
this . event && this . e vent. destroy ( )
this . event = new MouseEvent ( this . sdk )
YJ . Measure . SetMeasureStatus ( true )
that . tip = new MouseTip ( '左键确认,右键取消' , that . sdk )
that . event = new MouseEvent ( that . sdk )
that . nodePoints = [ ]
this . tip = new MouseTip ( '左键确认,右键取消' , this . sdk )
this . event = new MouseEvent ( this . sdk )
this . nodePoints = [ ]
let selectPoint
let originalPosition
let newpositions = [ ]
let fromDegreesArray = [ ]
let endpoint = { ... that . options . center }
let endpoint = { ... this . options . center }
let moveRadius = null
let entity
fromDegreesArray = that . createCircle ( that . options . center , that . options . radius )
fromDegreesArray = this . createCircle ( this . options . center , this . options . radius )
that . entity . polyline . clampToGround = true
that . entity . polyline . arcType = Cesium . ArcType . GEODESIC
that . entity . polygon . perPositionHeight = false
that . entity . polygon . hierarchy = new Cesium . CallbackProperty ( function ( ) {
this . entity . polyline . clampToGround = true
this . entity . polyline . arcType = Cesium . ArcType . GEODESIC
this . entity . polygon . perPositionHeight = false
this . entity . polygon . hierarchy = new Cesium . CallbackProperty ( function ( ) {
return new Cesium . PolygonHierarchy ( Cesium . Cartesian3 . fromDegreesArray ( fromDegreesArray ) )
} , false )
that . entity . polyline . positions = new Cesium . CallbackProperty ( function ( ) {
this . entity . polyline . positions = new Cesium . CallbackProperty ( function ( ) {
return Cesium . Cartesian3 . fromDegreesArray ( fromDegreesArray )
} , false )
setTimeout ( ( ) => {
let objectsToExclude = [ ... that . sdk . viewer . entities . values ]
that
let objectsToExclude = [ ... this . sdk . viewer . entities . values ]
this
. getClampToHeight ( {
lng : that . options . center . lng ,
lat : that . options . center . lat
lng : this . options . center . lng ,
lat : this . options . center . lat
} , objectsToExclude )
. then ( height => {
that . label . position = [
that . options . center . lng ,
that . options . center . lat ,
this . label . position = [
this . options . center . lng ,
this . options . center . lat ,
height
]
} )
} , 50 ) ;
setTimeout ( ( ) => {
that . event . mouse _left ( ( movement , cartesian ) => {
this . event . mouse _left ( ( movement , cartesian ) => {
if ( entity ) {
that . sdk . viewer . entities . remove ( entity )
this . sdk . viewer . entities . remove ( entity )
entity = null
}
endpoint = that . cartesian3Towgs84 ( cartesian , that . viewer )
let radius = that . computeDistance2 ( [ that . options . center , endpoint ] )
that . radius = radius
endpoint = this . cartesian3Towgs84 ( cartesian , this . viewer )
let radius = this . computeDistance2 ( [ this . options . center , endpoint ] )
this . radius = radius
YJ . Measure . SetMeasureStatus ( false )
that . event . destroy ( )
that . tip . destroy ( )
this . event . destroy ( )
this . tip . destroy ( )
that . heightMode = that . heightMode
this . heightMode = this . heightMode
cb ( '' , { ... this . options . center } )
} )
that . event . mouse _right ( ( movement , cartesian ) => {
this . event . mouse _right ( ( movement , cartesian ) => {
if ( entity ) {
that . sdk . viewer . entities . remove ( entity )
this . sdk . viewer . entities . remove ( entity )
entity = null
}
YJ . Measure . SetMeasureStatus ( false )
that . event . destroy ( )
that . tip . destroy ( )
this . event . destroy ( )
this . tip . destroy ( )
that . heightMode = that . heightMode
this . heightMode = this . heightMode
} )
that . event . mouse _move ( ( movement , cartesian ) => {
this . event . mouse _move ( ( movement , cartesian ) => {
entity && ( entity . show = true )
endpoint = that . cartesian3Towgs84 ( cartesian , that . viewer )
moveRadius = that . computeDistance2 ( [ that . options . center , endpoint ] )
fromDegreesArray = that . createCircle ( that . options . center , moveRadius )
that . tip . setPosition (
endpoint = this . cartesian3Towgs84 ( cartesian , this . viewer )
moveRadius = this . computeDistance2 ( [ this . options . center , endpoint ] )
fromDegreesArray = this . createCircle ( this . options . center , moveRadius )
this . tip . setPosition (
cartesian ,
movement . endPosition . x ,
movement . endPosition . y
@ -1956,28 +1555,28 @@ class CircleObject extends Base {
createNodePoints ( )
} , 200 ) ;
async function createNodePoints ( ) {
let objectsToExclude = [ ... that . sdk . viewer . entities . values ]
let height = await that . getClampToHeight ( that . options . center , objectsToExclude )
let entity = that . sdk . viewer . entities . add ( {
let objectsToExclude = [ ... _ this . sdk . viewer . entities . values ]
let height = await _ this . getClampToHeight ( _ this . options . center , objectsToExclude )
let entity = _ this . sdk . viewer . entities . add ( {
name : 'node-secondary-edit-point' ,
position : Cesium . Cartesian3 . fromDegrees ( that . options . center . lng , that . options . center . lat , height ) ,
position : Cesium . Cartesian3 . fromDegrees ( _ this . options . center . lng , _ this . options . center . lat , height ) ,
billboard : {
image : that . getSourceRootPath ( ) + '/img/point.png' ,
image : _ this . getSourceRootPath ( ) + '/img/point.png' ,
width : 15 ,
height : 15 ,
disableDepthTestDistance : Number . POSITIVE _INFINITY ,
color : Cesium . Color . WHITE . withAlpha ( 0.99 )
} ,
} )
that . nodePoints . push ( entity )
_ this . nodePoints . push ( entity )
}
entity = that . sdk . viewer . entities . add (
entity = this . sdk . viewer . entities . add (
new Cesium . Entity ( {
show : false ,
position : new Cesium . CallbackProperty ( ( e ) => {
if ( endpoint ) {
let c = that . computeMidpoint ( that . options . center , endpoint )
let c = this . computeMidpoint ( this . options . center , endpoint )
return Cesium . Cartesian3 . fromDegrees ( c . lng , c . lat , endpoint . alt )
} else {
return Cesium . Cartesian3 ( )
@ -2000,7 +1599,7 @@ class CircleObject extends Base {
} ,
polyline : {
positions : new Cesium . CallbackProperty ( ( e ) => {
return Cesium . Cartesian3 . fromDegreesArray ( [ that . options . center . lng , that . options . center . lat , endpoint . lng , endpoint . lat ] )
return Cesium . Cartesian3 . fromDegreesArray ( [ this . options . center . lng , this . options . center . lat , endpoint . lng , endpoint . lat ] )
} , false ) ,
width : 2 ,
material :
@ -2010,22 +1609,22 @@ class CircleObject extends Base {
}
} )
)
that . nodePoints . push ( entity )
this . nodePoints . push ( entity )
}
}
static closeNodeEdit ( that ) {
closeNodeEdit ( ) {
YJ . Measure . SetMeasureStatus ( false )
that . event && that . event . destroy ( )
that . tip && that . tip . destroy ( )
that . tip = null
this . event && this . event . destroy ( )
this . tip && this . tip . destroy ( )
this . tip = null
for ( let i = 0 ; i < that . nodePoints . length ; i ++ ) {
that . sdk . viewer . entities . remove ( that . nodePoints [ i ] )
for ( let i = 0 ; i < this . nodePoints . length ; i ++ ) {
this . sdk . viewer . entities . remove ( this . nodePoints [ i ] )
}
that . nodePoints = [ ]
that . picking = true
this . nodePoints = [ ]
this . picking = true
}
@ -2205,8 +1804,8 @@ class CircleObject extends Base {
}
// 计算投影面积
this . options . areaByMeter = Number ( ( Cesium . Math . PI * this . options . radius * this . options . radius ) . toFixed ( 2 ) )
this . areaUnit = this . areaUnit
this . areaByMeter = Number ( ( Cesium . Math . PI * this . options . radius * this . options . radius ) . toFixed ( 2 ) )
this . areaChangeCallBack && this . areaChangeCallBack ( )
return fromDegreesArray
}
}