ArcGIS js 模型飞行浏览学习笔记

在现有的arcgis js api 4.x中没有现成的飞行浏览接口,需要我们自己使用view.goTo()函数实现。通过查找相关资料,本文利用goTo()函数,实现了arcgis js中的飞行浏览模拟功能。

首先创建一个三维视图

使用arcgis js中的sceneView创建三维视图,具体代码如下:

			var map = new Map({
            	basemap: "satellite",
           		 ground: "world-elevation"
         	 	});
          	var view = new SceneView({
           		 	container: "earthContainer", 
            		map: map,
            	});

利用view.goTo()函数模拟飞行

创建一个函数flyLine进行飞行函数的模型(本文使用随机位置进行飞行模型,及纬度每次增加0.0001),大家可以根据自己项目的需要将函数绑定到click、checked等作为触发函数,flyLine函数的具体代码为:

flyLine() {
      let view = this.getViewer;
      let flyMoveUnit = 0.0001;
      let flyLatitude = 35;
      let flyLongitude = 111;
      let flyInterval  = null;
     
        view.goTo({ zoom: 17, tilt: 75, center: [flyLongitude, flyLatitude] })
          .then(function() {
            flyInterval = window.setInterval(function() {
              flyLongitude = flyLongitude;
              flyLatitude = flyLatitude + flyMoveUnit;
              view.goTo(
                {
                  zoom: 17,
                  tilt: 80,
                  center: [flyLongitude, flyLatitude]
                },
                {
                  easing: "linear", //动画效果  linear为线性速度
                  speedFactor: 1  //速度因素,相机移动的速度参数,默认为1
                }
              );
            }, 80);           //setInterval间隔时间
          });
    }

通过goTo()函数可在arcgis web端实现飞行浏览模拟。

arcgis js的飞行浏览主要不断更新goTo()函数中center参数进行模拟飞行,这里的center参数代表的是SceneView.center ,我们每次不断修改的是SceneView的中心点,然后利用arcgis中animate动画的形式跳转到下一个视图中心点,以模拟飞行的效果。如果我们不断地修改position 参数,那么我们修改的就是camera.position,这时相机位置会不断修改,跳转效果将是相机的位置跳转,不能保持相机的平稳飞行,模拟飞行浏览的效果不好。

goTo(target, options)参数介绍:

target包括:
target 【Number[]|Geometry|Geometry[]|Graphic|Graphic[]|Viewpoint|Camera|Object】
视图动画跳转的目标,可以是位置,几何,图形等等。
center 【Number[]|Point】
将要跳转过去的SceneView.center
scale 【Number[]】
设置将要跳转过得SceneView.scale 比例
zoom 【Number[]】
设置最终跳转后的zoom值(放大还是缩小)
heading 【Number[]】
设置相机的heading属性。heading值在地球视图中,以正北方向值为0,顺时针增加,如:正东方向为90,范围是0-360
tilt 【Number[]】
设置相机的tilt属性。tilt属性值在地球视图中,相机垂直地面的方向为0,当相机平行于表面时为90度。
position 【Point】
设置Camera.position的属性。设置最终相机的位置。
options包括:
animate 【Boolean】
默认值: true
指示是否应动画化到新视图的转换。如果设置为false,则忽略speedFactor, duration, maxDuration, 和 easing参数。
speedFactor 【Number[]】
默认值:1
用来设置动画的速度,如果设置为2,则飞行速度比默认速度增加一倍,以此类推。
duration 【Number[]】
设置动画的精确持续时间(以毫秒为单位)
maxDuration 【Number[]】
动画允许的最大持续时间(以毫秒为单位)
easing 【String|EasingFunction】
设置动画中的飞行效果。默认的飞行效果(速度曲线)有:linear, in-cubic, out-cubic, in-out-cubic, in-expo, out-expo, in-out-expo, in-out-coast-quadratic。默认是:其中小于1000毫秒的动画使用out-expo;更长的时间使用in-out-coast-quadratic。如果你想要飞行效果匀速飞行,那么你设置easing为linear即可

easing常用的效果曲线图解释(jQuery UI中,可作为大家参考):

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ponGISer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值