ArcGIS Api for JS4.13 Camera(照相机)的坑

前面两个属性不用管,主要时后面三个。

1、先看position,position用来确定照相机的位置,照相机就像我们人眼一样,position意在确定人是位于哪个地方开始看的。

position主要的参数latitude(经度)、longitude(维度)、z(高程)。

2、heading(方向)是旋转角度,确定好position位置,那就可以确定视角的水平角度,10即向右旋转10°。

3、tilt(倾斜),如上图所示,绿色的点为照相机的位置(即人眼睛的位置)。y为照相机到地面的垂线,x为视线,t就是tilt,通过控制tilt的大小,就可以控制视线的垂直角度。

应用:

方法一:经过了一番测试,想用camera可以用clone方法对scene view的camera进行克隆,然后将克隆得到的结果进行修改,再用goTo()调用修改的结果,这样camera才能够用。代码如下

      var view = new SceneView({
        container: "viewDiv",
        map: map,
        extent: kansasExtent
      });

      

      document.getElementById('testbutton').addEventListener("click",function(){
        var cam = view.camera.clone();
        cam.heading = -90;  
        view.goTo(cam);
      }

这种方法有一个问题,就是如果时页面还没渲染完时,clone()方法是会报错的。所以这里用了一个按钮来出发clone()致使避开了一个坑。

方法二:new一个camera然后直接用goTo(camera)。这里记得加入camera类和point类

require([
      "esri/Map",
      "esri/views/SceneView",
      "esri/layers/SceneLayer",
      "esri/geometry/Point",
      "esri/Camera",
      "dojo/domReady!"
    ], function(Map, SceneView,SceneLayer, Point, Camera) {
document.getElementById('testbutton').addEventListener("click",function(){
        var cam = new Camera({
          position: new Point({
            x: 396625.65327835083,
            y: 3126900.9483306026,
            z: 700,
            spatialReference: {
                                    wkid: 4547
                                }
          }),
          heading: 20, // facing due south
          tilt: 45      // bird's eye view
        });
        view.goTo(cam);

        console.log(cam);
        console.log('相机执行完毕');
      })
})

对于position,也可以直接设置,这样就不用加point类然后通过new Point来设置了。

position: {
                                x: 396625.65327835083,
                                y: 3126900.9483306026,
                                z: 700,
                                spatialReference: {
                                    wkid: 4547
                                }
                            }

方法二的巨坑:在new camera时必须要设置position的值,这里官网只在例子里说了,一开始我也没发现,一直报错。而且这里说了Point默认的坐标系时WGS84,如果你的坐标系不是WGS84,也没有给点设置参考系的话,camera会失效的。所以当参考系不是WGS84时必须通过设置position中的spatialReference属性来设置好照相机position的参考系。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值