[cesium]拾取加载arcgis瓦片图层的属性

效果

代码 

 this._arcgisImage = new Cesium.ArcGisMapServerImageryProvider({
        url:URL
      });
      let arcgisImageLayer = viewer.imageryLayers.addImageryProvider(
        this._arcgisImage
      );    
        
    pick(){
      //标签
      let bubble = undefined;
      //拾取属性
      this._handler.setInputAction(movement => {
        const ray = viewer.camera.getPickRay(movement.position);
        const cartesian = viewer.scene.globe.pick(ray, viewer.scene);
        if (cartesian) {
          var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
          if (cartographic) {
            var xy = new Cesium.Cartesian2();
            var alti = viewer.camera.positionCartographic.height;
            var level = this.getLevel(alti);
            if (this._arcgisImage.ready) {
              xy = this._arcgisImage.tilingScheme.positionToTileXY(
                cartographic,
                level,
                xy
              );
              var promise = this._arcgisImage.pickFeatures(
                xy.x,
                xy.y,
                level,
                cartographic.longitude,
                cartographic.latitude
              );
              Cesium.when(promise, function(layerInfo) {
                //查询结果展示
                if (layerInfo && layerInfo.length > 0) {
                  if (bubble) viewer.graphicLayer.remove(bubble);

                  let bubbleGraphicOpt = new GV.BubbleGraphicOpt();
                  bubbleGraphicOpt.bindObject = new GV.GeoPoint(
                    Cesium.Math.toDegrees(cartographic.longitude),
                    Cesium.Math.toDegrees(cartographic.latitude)
                  );

                  bubble = new GV.BubbleGraphic(bubbleGraphicOpt);

                  viewer.graphicLayer.add(bubble);
                  //<span class="_closeTip" style="float:right;">x</span>
                  bubble.panelDom.innerHTML =
                    `<div class="wrapper">
                      <div><span>图斑信息</span></div><div class="content"><tr><td>属性名</td><td>属性值</td></tr>` +
                    layerInfo[0].description +
                    `</div></div>`;
                }
              });
            }
          }
        }
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);


    }
      

    //瓦片层级
    getLevel(height) {
      if (height > 48000000) {
        return 0;
      } else if (height > 24000000) {
        return 1;
      } else if (height > 12000000) {
        return 2;
      } else if (height > 6000000) {
        return 3;
      } else if (height > 3000000) {
        return 4;
      } else if (height > 1500000) {
        return 5;
      } else if (height > 750000) {
        return 6;
      } else if (height > 375000) {
        return 7;
      } else if (height > 187500) {
        return 8;
      } else if (height > 93750) {
        return 9;
      } else if (height > 46875) {
        return 10;
      } else if (height > 23437.5) {
        return 11;
      } else if (height > 11718.75) {
        return 12;
      } else if (height > 5859.38) {
        return 13;
      } else if (height > 2929.69) {
        return 14;
      } else if (height > 1464.84) {
        return 15;
      } else if (height > 732.42) {
        return 16;
      } else if (height > 366.21) {
        return 17;
      } else {
        return 18;
      }

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值