Cesium经纬度

computed: {
  handler() {
    return new this.Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas)
  }
}
    //获取经纬度的方法
    getPosition() {
      const _this = this  //这里必须要转换一下 在setInputAction方法中,this的指向发生了变化
      _this.handler.setInputAction(function (movement) {
        //获取屏幕坐标
        var position = movement.endPosition

        //屏幕坐标转换为世界坐标
        var pick = new _this.Cesium.Cartesian2(position.x, position.y)
        var cartesian = _this.viewer.scene.globe.pick(_this.viewer.camera.getPickRay(pick), _this.viewer.scene)

        //世界坐标转换为经纬度
        var ellipsoid = _this.viewer.scene.globe.ellipsoid
        if(cartesian === undefined){

        }else{
          var cartesian3 = new _this.Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z)
          var cartographic = ellipsoid.cartesianToCartographic(cartesian3)
          var lat = _this.Cesium.Math.toDegrees(cartographic.latitude)   //这是纬度
          var lng = _this.Cesium.Math.toDegrees(cartographic.longitude)  //这是经度
          _this.latitudeData = lat
          _this.longitudeData = lng
        }
      }, _this.Cesium.ScreenSpaceEventType.MOUSE_MOVE)    //_this.Cesium 是在main.js里配置了全局变量
    }

猜你喜欢

转载自www.cnblogs.com/reround/p/12091932.html