@ -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} 高度模式( : ; : ; : )   
		
	
		
			
				   * @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 )  { 
 
		
	
		
			
				      . . label . position  =  {  lng :  that . . . lng ,  lat :  that . . . lat ,  alt :  that . . . alt  +  } 
 
		
	
		
			
				    } 
 
		
	
		
			
				    // 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  =  
 
		
	
		
			
				    // 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 . =  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  =  ( )  =>  {  } )  { 
 
		
	
		
			
				    at . positionEditing  =  fals e
 
		
	
		
			
				  openPosition Editing ( cd )  { 
 
		
	
		
			
				    is . 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 && at . event . destroy ( ) 
 
		
	
		
			
				      at . event  = new  MouseE vent( that . sdk ) 
 
		
	
		
			
				      let  _this = is 
 
		
	
		
			
				      is . event  && this . e vent. destroy ( ) 
 
		
	
		
			
				      this . event  =  new  MouseEvent ( this . sdk ) 
 
		
	
		
			
				      YJ . Measure . SetMeasureStatus ( true ) 
 
		
	
		
			
				      at . tip  =  new  MouseTip ( '左键确认,右键取消' ,  at . sdk ) 
 
		
	
		
			
				      at . event  =  new  MouseEvent ( at . sdk ) 
 
		
	
		
			
				      at . nodePoints  =  [ ] 
 
		
	
		
			
				      is . tip  =  new  MouseTip ( '左键确认,右键取消' ,  is . sdk ) 
 
		
	
		
			
				      is . event  =  new  MouseEvent ( is . sdk ) 
 
		
	
		
			
				      is . nodePoints  =  [ ] 
 
		
	
		
			
				      let  selectPoint 
 
		
	
		
			
				      let  originalPosition 
 
		
	
		
			
				      let  newpositions  =  [ ] 
 
		
	
		
			
				      let  fromDegreesArray  =  [ ] 
 
		
	
		
			
				      let  endpoint  =  {  ... at . options . center  } 
 
		
	
		
			
				      let  endpoint  =  {  ... is . options . center  } 
 
		
	
		
			
				      let  moveRadius  =  null 
 
		
	
		
			
				      let  entity 
 
		
	
		
			
				      fromDegreesArray  =  at . createCircle ( at . options . center ,  at . options . radius ) 
 
		
	
		
			
				      fromDegreesArray  =  is . createCircle ( is . options . center ,  is . options . radius ) 
 
		
	
		
			
				 
		
	
		
			
				 
		
	
		
			
				 
		
	
		
			
				      at . entity . polyline . clampToGround  =  true 
 
		
	
		
			
				      at . entity . polyline . arcType  =  Cesium . ArcType . GEODESIC 
 
		
	
		
			
				      at . entity . polygon . perPositionHeight  =  false 
 
		
	
		
			
				      at . entity . polygon . hierarchy  =  new  Cesium . CallbackProperty ( function  ( )  { 
 
		
	
		
			
				      is . entity . polyline . clampToGround  =  true 
 
		
	
		
			
				      is . entity . polyline . arcType  =  Cesium . ArcType . GEODESIC 
 
		
	
		
			
				      is . entity . polygon . perPositionHeight  =  false 
 
		
	
		
			
				      is . entity . polygon . hierarchy  =  new  Cesium . CallbackProperty ( function  ( )  { 
 
		
	
		
			
				        return  new  Cesium . PolygonHierarchy ( Cesium . Cartesian3 . fromDegreesArray ( fromDegreesArray ) ) 
 
		
	
		
			
				      } ,  false ) 
 
		
	
		
			
				      at . entity . polyline . positions  =  new  Cesium . CallbackProperty ( function  ( )  { 
 
		
	
		
			
				      is . entity . polyline . positions  =  new  Cesium . CallbackProperty ( function  ( )  { 
 
		
	
		
			
				        return  Cesium . Cartesian3 . fromDegreesArray ( fromDegreesArray ) 
 
		
	
		
			
				      } ,  false ) 
 
		
	
		
			
				      setTimeout ( ( )  =>  { 
 
		
	
		
			
				        let  objectsToExclude  =  [ ... at . sdk . viewer . entities . values ] 
 
		
	
		
			
				        at 
 
		
	
		
			
				        let  objectsToExclude  =  [ ... is . sdk . viewer . entities . values ] 
 
		
	
		
			
				        is 
 
		
	
		
			
				          . getClampToHeight ( { 
 
		
	
		
			
				            lng :  at . options . center . lng , 
 
		
	
		
			
				            lat :  at . options . center . lat 
 
		
	
		
			
				            lng :  is . options . center . lng , 
 
		
	
		
			
				            lat :  is . options . center . lat 
 
		
	
		
			
				          } ,  objectsToExclude ) 
 
		
	
		
			
				          . then ( height  =>  { 
 
		
	
		
			
				            at . label . position  =  [ 
 
		
	
		
			
				              at . options . center . lng , 
 
		
	
		
			
				              at . options . center . lat , 
 
		
	
		
			
				            is . label . position  =  [ 
 
		
	
		
			
				              is . options . center . lng , 
 
		
	
		
			
				              is . options . center . lat , 
 
		
	
		
			
				              height 
 
		
	
		
			
				            ] 
 
		
	
		
			
				          } ) 
 
		
	
		
			
				      } ,  50 ) ; 
 
		
	
		
			
				 
		
	
		
			
				      setTimeout ( ( )  =>  { 
 
		
	
		
			
				        at . event . mouse _left ( ( movement ,  cartesian )  =>  { 
 
		
	
		
			
				        is . event . mouse _left ( ( movement ,  cartesian )  =>  { 
 
		
	
		
			
				          if  ( entity )  { 
 
		
	
		
			
				            at . sdk . viewer . entities . remove ( entity ) 
 
		
	
		
			
				            is . sdk . viewer . entities . remove ( entity ) 
 
		
	
		
			
				            entity  =  null 
 
		
	
		
			
				          } 
 
		
	
		
			
				          endpoint  =  at . cartesian3Towgs84 ( cartesian ,  at . viewer ) 
 
		
	
		
			
				          let  radius  =  at . computeDistance2 ( [ at . options . center ,  endpoint ] ) 
 
		
	
		
			
				          at . radius  =  radius 
 
		
	
		
			
				          endpoint  =  is . cartesian3Towgs84 ( cartesian ,  is . viewer ) 
 
		
	
		
			
				          let  radius  =  is . computeDistance2 ( [ is . options . center ,  endpoint ] ) 
 
		
	
		
			
				          is . radius  =  radius 
 
		
	
		
			
				 
		
	
		
			
				          YJ . Measure . SetMeasureStatus ( false ) 
 
		
	
		
			
				          at . event . destroy ( ) 
 
		
	
		
			
				          at . tip . destroy ( ) 
 
		
	
		
			
				          is . event . destroy ( ) 
 
		
	
		
			
				          is . tip . destroy ( ) 
 
		
	
		
			
				 
		
	
		
			
				          at . heightMode  =  at . heightMode 
 
		
	
		
			
				          is . heightMode  =  is . heightMode 
 
		
	
		
			
				 
		
	
		
			
				          cb ( '' ,  { ... this . options . center } ) 
 
		
	
		
			
				        } ) 
 
		
	
		
			
				 
		
	
		
			
				        at . event . mouse _right ( ( movement ,  cartesian )  =>  { 
 
		
	
		
			
				        is . event . mouse _right ( ( movement ,  cartesian )  =>  { 
 
		
	
		
			
				          if  ( entity )  { 
 
		
	
		
			
				            at . sdk . viewer . entities . remove ( entity ) 
 
		
	
		
			
				            is . sdk . viewer . entities . remove ( entity ) 
 
		
	
		
			
				            entity  =  null 
 
		
	
		
			
				          } 
 
		
	
		
			
				 
		
	
		
			
				          YJ . Measure . SetMeasureStatus ( false ) 
 
		
	
		
			
				          at . event . destroy ( ) 
 
		
	
		
			
				          at . tip . destroy ( ) 
 
		
	
		
			
				          is . event . destroy ( ) 
 
		
	
		
			
				          is . tip . destroy ( ) 
 
		
	
		
			
				 
		
	
		
			
				          at . heightMode  =  at . heightMode 
 
		
	
		
			
				          is . heightMode  =  is . heightMode 
 
		
	
		
			
				        } ) 
 
		
	
		
			
				 
		
	
		
			
				        at . event . mouse _move ( ( movement ,  cartesian )  =>  { 
 
		
	
		
			
				        is . event . mouse _move ( ( movement ,  cartesian )  =>  { 
 
		
	
		
			
				          entity  &&  ( entity . show  =  true ) 
 
		
	
		
			
				          endpoint  =  at . cartesian3Towgs84 ( cartesian ,  at . viewer ) 
 
		
	
		
			
				          moveRadius  =  at . computeDistance2 ( [ at . options . center ,  endpoint ] ) 
 
		
	
		
			
				          fromDegreesArray  =  at . createCircle ( at . options . center ,  moveRadius ) 
 
		
	
		
			
				          at . tip . setPosition ( 
 
		
	
		
			
				          endpoint  =  is . cartesian3Towgs84 ( cartesian ,  is . viewer ) 
 
		
	
		
			
				          moveRadius  =  is . computeDistance2 ( [ is . options . center ,  endpoint ] ) 
 
		
	
		
			
				          fromDegreesArray  =  is . createCircle ( is . options . center ,  moveRadius ) 
 
		
	
		
			
				          is . 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  =  at . sdk . viewer . entities . add ( 
 
		
	
		
			
				      entity  =  is . sdk . viewer . entities . add ( 
 
		
	
		
			
				        new  Cesium . Entity ( { 
 
		
	
		
			
				          show :  false , 
 
		
	
		
			
				          position :  new  Cesium . CallbackProperty ( ( e )  =>  { 
 
		
	
		
			
				            if  ( endpoint )  { 
 
		
	
		
			
				              let  c  =  at . computeMidpoint ( at . options . center ,  endpoint ) 
 
		
	
		
			
				              let  c  =  is . computeMidpoint ( is . 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 ( [ at . options . center . lng ,  at . options . center . lat ,  endpoint . lng ,  endpoint . lat ] ) 
 
		
	
		
			
				              return  Cesium . Cartesian3 . fromDegreesArray ( [ is . options . center . lng ,  is . options . center . lat ,  endpoint . lng ,  endpoint . lat ] ) 
 
		
	
		
			
				            } ,  false ) , 
 
		
	
		
			
				            width :  2 , 
 
		
	
		
			
				            material : 
 
		
	
	
		
			
				
					
					
						
					 
				
			
			@ -2010,22 +1609,22 @@ class CircleObject extends Base {
 
		
	
		
			
				          } 
 
		
	
		
			
				        } ) 
 
		
	
		
			
				      ) 
 
		
	
		
			
				      at . nodePoints . push ( entity ) 
 
		
	
		
			
				      is . nodePoints . push ( entity ) 
 
		
	
		
			
				 
		
	
		
			
				    } 
 
		
	
		
			
				  } 
 
		
	
		
			
				 
		
	
		
			
				  static   closeNodeEdit ( that )  { 
 
		
	
		
			
				  closeNodeEdit ( )  { 
 
		
	
		
			
				    YJ . Measure . SetMeasureStatus ( false ) 
 
		
	
		
			
				    at . event  &&  at . event . destroy ( ) 
 
		
	
		
			
				    at . tip  &&  at . tip . destroy ( ) 
 
		
	
		
			
				    at . tip  =  null 
 
		
	
		
			
				    is . event  &&  is . event . destroy ( ) 
 
		
	
		
			
				    is . tip  &&  is . tip . destroy ( ) 
 
		
	
		
			
				    is . tip  =  null 
 
		
	
		
			
				 
		
	
		
			
				    for  ( let  i  =  0 ;  i  <  at . nodePoints . length ;  i ++ )  { 
 
		
	
		
			
				      at . sdk . viewer . entities . remove ( at . nodePoints [ i ] ) 
 
		
	
		
			
				    for  ( let  i  =  0 ;  i  <  is . nodePoints . length ;  i ++ )  { 
 
		
	
		
			
				      is . sdk . viewer . entities . remove ( is . nodePoints [ i ] ) 
 
		
	
		
			
				    } 
 
		
	
		
			
				    at . nodePoints  =  [ ] 
 
		
	
		
			
				    at . picking  =  true 
 
		
	
		
			
				    is . nodePoints  =  [ ] 
 
		
	
		
			
				    is . picking  =  true 
 
		
	
		
			
				  } 
 
		
	
		
			
				 
		
	
		
			
				 
		
	
	
		
			
				
					
					
						
					 
				
			
			@ -2205,8 +1804,8 @@ class CircleObject extends Base {
 
		
	
		
			
				    } 
 
		
	
		
			
				 
		
	
		
			
				    // 计算投影面积 
 
		
	
		
			
				this . options . =  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 
 
		
	
		
			
				  } 
 
		
	
		
			
				}