view的常用属性和方法介绍(arcgis for javascript)

news2024/11/24 7:01:23

ArcGIS for JavaScript中的视图(view)是一个地图实例类,用于管理地图的显示区域、符号和标注等。通过视图类,可以实现以下功能:

  1. 显示地图:将地图显示在Web页面上。

  2. 缩放:缩放视图到指定的级别。

  3. 平移:在地图上移动视图。

  4. 查询和选择:通过视图可以查询并选择地图上的要素。

  5. 标注管理:在地图上添加和编辑符号和标注。

  6. 监控地图状态:可以通过视图实例读取和监控地图状态,例如当前缩放级别、地图范围和中心点等。

视图实例类可以在ArcGIS for JavaScript的API中使用,使用前需要先创建地图实例,然后再创建对应的视图实例。具体使用方法如下:

  1. 创建地图实例:
var map = new Map({
   basemap: "streets"
});
  1. 创建视图实例:
var view = new MapView({
   container: "viewDiv",
   map: map
});

比如我们创建一个三维地图:
在这里插入图片描述
代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>三维地图</title>
    <style>
      html,
      body,
      #viewDiv {
        position: relative;
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
    <link rel="stylesheet" href="https://js.arcgis.com/4.26/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.26/"></script>
    <script>
      require(["esri/Map", "esri/views/SceneView"], (Map, SceneView) => {
        const map = new Map({
          basemap: "topo-vector", // 将地图的底图设置为矢量地图
          ground: "world-elevation" // 将地图的地形设置为世界高程服务
        });
        const view = new SceneView({
          container: "viewDiv", // 将创建的div元素赋值给container属性
          map: map, // 将创建的地图对象赋值给map属性
        });
      });
    }
    </script>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
</html>

在上面的代码中,SceneView是视图实例类,container是Web页面上用于显示地图的容器,map是地图实例。创建视图实例后,可以设置其属性

一、view的常用属性

  1. container
    表示包含视图的 DOM 元素的 或 节点, 就是将将来地图要渲染到web页面的dom容器。
<script>
const view = new SceneView({
   container: "viewDiv", // 将创建的div元素赋值给container属性
 });
</script>
<body>
    <div id="viewDiv"></div>
</body>
  1. map
    map属性需要设置一个new Map()的实例,表示当前地图采用那种底图和模式类型。
const view = new SceneView({
   container: "viewDiv", // 将创建的div元素赋值给container属性
   map: new Map({
          basemap: "topo-vector", // 将地图的底图设置为矢量地图
          ground: "world-elevation" // 将地图的地形设置为世界高程服务
        }),
});

  1. zoom
    表示地图的缩放级别,范围是[1, 20], 值越小表示地图缩的越小,用户看到的地图范围越大。
const view = new SceneView({
   container: "viewDiv", // 将创建的div元素赋值给container属性
   map: new Map({
          basemap: "topo-vector", // 将地图的底图设置为矢量地图
          ground: "world-elevation" // 将地图的地形设置为世界高程服务
        }),
   zoom: 10
});
  1. center
    表示地图中心点,[116.378517,39.865246] // 北京
const view = new SceneView({
   container: "viewDiv", // 将创建的div元素赋值给container属性
   map: new Map({
          basemap: "topo-vector", // 将地图的底图设置为矢量地图
          ground: "world-elevation" // 将地图的地形设置为世界高程服务
        }),
   center: [116.378517,39.865246]
});

如上面代码,在地图初始化时将地图中心点设置为北京:
在这里插入图片描述
5. navigation
这个属性是设置一些鼠标操作地图的限制的

require(["esri/Map", "esri/views/MapView"], (Map, MapView) => {
        const map = new Map({
          basemap: "topo-vector"
        });
        const view = new MapView({
          container: "viewDiv", // 获取页面中的div元素
          map: map, // 将创建的地图对象赋值给map属性
          zoom: 4, // 设置缩放级别
          center: [15, 65], // 设置中心点
          navigation: {
            gamepad: {
              enabled: false, // 禁止游戏手柄
            },
            browserTouchPanEnabled: false, // 禁止触摸平移
            momentumEnabled: false, // 禁止动量
            mouseWheelZoomEnabled: false, // 禁止鼠标滚轮缩放
          },
        });
      });
  1. ui
    ui属性是设置地图界面用户可以操作的一些小部件,如在地图右下角添加地图切换部件
      let view = null;
      require(["esri/Map", "esri/views/SceneView" ,"esri/widgets/BasemapToggle"], (Map, SceneView, BasemapToggle) => {
        const map = new Map({
          basemap: "topo-vector", // 将地图的底图设置为矢量地图
          ground: "world-elevation", // 将地图的地形设置为世界高程服务
        });
        view = new SceneView({
          container: "viewDiv", // 将创建的div元素赋值给container属性
          map: map, // 将创建的地图对象赋值给map属性
          //   scale: 50000000, // 设置比例尺
          center: [-101.17, 21.78], // 设置中心点
          navigation: {
            gamepad: {
              enabled: true, // 禁止游戏手柄
            },
            browserTouchPanEnabled: false, // 禁止触摸平移
            momentumEnabled: false, // 禁止动量
            mouseWheelZoomEnabled: true, // 禁止鼠标滚轮缩放
          },
        });
        let toggle = new BasemapToggle({
            view: view,
            nextBasemap: "hybrid"
        });
        // 添加底图切换控件
        view.ui.add(toggle, "bottom-right");
}

效果如图:
在这里插入图片描述
添加后可以移动位置:

view.ui.move([ "zoom", toggle ], "bottom-left");

有添加肯定就有删除:

view.ui.empty("bottom-right");
  1. popup
    这个是地图弹框属性,用法如下:
// 显示弹出窗口
view.popup.open({
    title: "Title",
    content: "你好我是弹窗",
    location: view.center,
});

二、view的常用方法

  1. when()
    监听地图加载完之后调用,这里我们可以做一些地图加载完之后的操作,比如重新设置地图中心点和缩放级别等
    在这里插入图片描述
    如图我们结合popup弹框属性,让地图加载完成之后弹个框,代码如下:
      let view = null;
      require(["esri/Map", "esri/views/SceneView" ,"esri/widgets/BasemapToggle"], (Map, SceneView, BasemapToggle) => {
        const map = new Map({
          basemap: "topo-vector", // 将地图的底图设置为矢量地图
          ground: "world-elevation", // 将地图的地形设置为世界高程服务
        });
        view = new SceneView({
          container: "viewDiv", // 将创建的div元素赋值给container属性
          map: map, // 将创建的地图对象赋值给map属性
          //   scale: 50000000, // 设置比例尺
          center: [-101.17, 21.78], // 设置中心点
          navigation: {
            gamepad: {
              enabled: true, // 禁止游戏手柄
            },
            browserTouchPanEnabled: false, // 禁止触摸平移
            momentumEnabled: false, // 禁止动量
            mouseWheelZoomEnabled: true, // 禁止鼠标滚轮缩放
          },
        });
        let toggle = new BasemapToggle({
            view: view,
            nextBasemap: "hybrid"
        });
        // 添加底图切换控件
        view.ui.add(toggle, "bottom-right");

        // 当地图加载完成后执行
        view.when(() => {
          // 显示弹出窗口
          view.popup.open({
            title: "Title",
            content: "你好我是弹窗",
            location: view.center,
          });
        });
      });
  1. goto()
    这个是可以让地图跳转到你设置的地方,如下:
    请添加图片描述
    我们整个按钮,点击之后跳转至对应地方,代码如下:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>三维地图</title>
    <style>
      html,
      body,
      #viewDiv {
        position: relative;
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
      #btn {
        position: absolute;
        top: 30px;
        right: 30px;
        z-index: 50;
        background-color: white;
        padding: 10px;
        border-radius: 5px;
        box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
      }
    </style>
    <link rel="stylesheet" href="https://js.arcgis.com/4.26/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.26/"></script>
    <script>
      let view = null;
      require(["esri/Map", "esri/views/SceneView"], (Map, SceneView) => {
        const map = new Map({
          basemap: "topo-vector", // 将地图的底图设置为矢量地图
          ground: "world-elevation", // 将地图的地形设置为世界高程服务
        });
        view = new SceneView({
          container: "viewDiv", // 将创建的div元素赋值给container属性
          map: map, // 将创建的地图对象赋值给map属性
          center: [-101.17, 21.78], // 设置中心点
        });
      });
      function goto() {
        view.goTo({
          zoom: 5,
          center: [116.378517, 39.865246],
        });
      }
    </script>
  </head>
  <body>
    <div id="viewDiv"></div>
    <!-- 写一个按钮,绑定goto事件 -->
    <button id="btn" onclick="goto()">goto</button>
  </body>
</html>

  1. on(type, handler)
    监听地图交互事件,type: 地图交互类型,如:‘click’点击, handler:回调函数,用法如下:
// 监听点击事件
        view.on("click", (event) => {
          // 获取当前点击的地方的经纬度
          console.log(event.mapPoint.longitude, event.mapPoint.latitude);
        });

type的值还有’double-click’双击, drag拖拽,key-down按下键,key-up抬起键等

好啦,这就是一些view的常用属性和方法,当然view的属性和方法远远不止这些,感兴趣的朋友可以去官网看看链接如下:
arcgis for javascript之view用法介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Benewake(北醒) 快速实现TF40与电脑通信操作说明

目录 一、前言二、工具准备1. TTL-USB 转接线2. TF403. 兆信直流电源4. 连接线5. PC&#xff1a;Windows 系统6. 上位机 WINCC_TF 三、 连接方式1. TTL-USB 转接线接口说明2. TF40 引脚功能及连接说明3. 连线图 四、TF40 与电脑通信操作说明1. 参数设置2.获取测距值3. 设置波特…

百度倾力出品|《神经网络机器翻译技术及产业应用》正式上线

随着经济社会的国际交流合作日益密切&#xff0c;人们迫切需要高质量、高效率的跨语言信息获取和传播工具。《神经网络机器翻译技术及产业应用》以产业需求为牵引&#xff0c;分析了新时期机器翻译的产业需求特点和挑战&#xff0c;介绍了神经网络翻译的基本理论、前沿技术以及…

10课程设计收尾及优秀作品展示答辩【FPGA模型机课程设计】

10课程设计收尾及优秀作品展示答辩【FPGA模型机课程设计】 前言说明推荐10课程设计收尾及优秀作品展示答辩安排 目录一、单周期CPU的设计过程1、基本的20条指令固定指令格式设计I 型指令设计J型指令设计lw sw指令设计 2、扩展的20条指令J型扩展指令设计乘法除法指令格式 3、实现…

阿里云推出工作学习 AI 助手“通义听悟”;谷歌发布 PaLM2;吴恩达推出了三门课

&#x1f989; AI新闻 &#x1f680; 阿里云推出工作学习 AI 助手“通义听悟” 摘要&#xff1a;阿里云峰会・粤港澳大湾区上&#xff0c;阿里云宣布推出最新产品“通义听悟”&#xff0c;该产品能用于会议讨论、教学培训、调研访谈、视频观看等场景&#xff0c;依托大模型&a…

CDS Core Data Services S4 CDS view--1

下一代的数据库视图。比DDIC view能干。 也就是S4上了之后就用这个CDS view了。 目录 1. 软件安装 2. CDS view 是啥 3. 怎么去建CDS view 4. 如何修改一个CDS view&#xff0c;添加association关联 5. 一些有用的功能 6. 基础语法 6.1 Case 6.2 Cast 6.3 String 6…

【程序】基于matlab使用线性 FM 脉冲波形拉伸处理进行距离估计

一、前言 此示例展示了如何在使用线性 FM 脉冲波形的雷达系统中使用拉伸处理来估计目标的范围。 二、介绍 线性FM波形是现代雷达系统中的热门选择&#xff0c;因为它可以通过扫描宽带宽来实现高范围分辨率。然而&#xff0c;当带宽达到数百兆赫甚至千兆赫兹时&#xff0c;在数字…

【C进阶】文件操作(下)(详解--适合初学者入门)

目录 补充的知识点:> 标准流 FILE型 fopen(打开文件) fclose(关闭文件) 5.文件的随机读写&#x1f4bb; 5.1 fwrite&#x1f4c2; 5.2fread&#x1f4c2; 5.3fseek&#x1f4c2; 5.4 ftell&#x1f4c2; 5.5 rewind&#x1f4c2; 6.文本文件和二进制文件&#x1f4bb; 7.文件…

如何做好网站建设定制开发

随着互联网的发展&#xff0c;如今的网站建设技术越来越先进&#xff0c;所以在网站建设定制开发中就出现了很多的模版&#xff0c;如&#xff1a;企业类型、产品信息、品牌介绍等。当然网站建设定制开发不是说只要模版就行了&#xff0c;对于网站建设而言&#xff0c;模版只是…

【送书福利-第八期】《硅基物语.AI大爆炸: ChatGPT→AIGC→GPT-X→AGI进化→魔法时代→人类未来》

大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我&#xff01; 本文目录 一、前言二、内容介绍三、作者介…

如何进行网站建设定制开发

如今&#xff0c;由于互联网的迅速发展&#xff0c;市场竞争越来越激烈&#xff0c;企业想要在市场中保持竞争力&#xff0c;就必须要有自己的品牌形象。而网站建设则是品牌建设的重要组成部分&#xff0c;一个好的网站能够有效提升企业品牌形象&#xff0c;提高客户满意度和忠…

Linux LNMP(Linux NGINX MySQL PHP)

NGINX处理静态页面性能出色&#xff0c;但是动态页面几乎没有处理能力&#xff0c;比Apache还差 所以涉及动态页面的场合一般由PHP Python Java&#xff08;后缀php&#xff0c;py&#xff0c;jsp&#xff09;等处理 静态页面请求 客户端 -> nginx动态页面请求 …

【工具推荐】使用D3.js制作网页版网络拓扑图,可拖转可跳转链接

文章目录 一、有哪些工具可以生成带链接的网络拓扑图二、推荐使用D3.js三、写个 demo吧四、d3.js相关学习资料1.官方网站2.D3.js 教程3.D3.js 教程 一、有哪些工具可以生成带链接的网络拓扑图 有一些 JavaScript 库可以帮助你创建网络拓扑图&#xff0c;并且支持将每个节点作为…

chatgpt赋能python:Python函数相加:如何使用函数进行数学计算

Python函数相加&#xff1a;如何使用函数进行数学计算 在Python编程中&#xff0c;函数是一种非常有用的工具&#xff0c;可以将代码组织成可重复使用的块。函数可以接受输入并产生输出&#xff0c;也可以执行任何数量的操作。在本文中&#xff0c;我们将介绍如何使用Python函…

美创科技新一代 灾备一体化平台(DRCC v3.0)发布

随着数字化转型浪潮的迅速推进&#xff0c;关键基础设施的运行安全和业务连续性保证成为数字化建设的基石。 云计算时代带来的资产复杂性和灾备技术多态性&#xff0c;给灾备能力建设、灾备资源高效利用和日常灾备运营提出了新挑战。灾备建设如何“简单又弹性”、灾备运营如何“…

Cloudflare 的 Kafka 故事:在处理 1 万亿条消息的过程中吸取的经验教训

关键要点 Cloudflare在处理大量数据时使用Kafka集群&#xff0c;开发了一个通用的消息总线集群&#xff0c;以解耦团队、有效扩展和处理数万亿条消息。 为了解决事件驱动系统中无结构通信的问题&#xff0c;应建立一个强有力的契约&#xff1a;跨平台数据格式Protobuf帮助Cl…

【教程】路由器自动定时登录校园网

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 目录 前景提要 Python脚本 Shell脚本(推荐) 路由器挂机 实现效果 前景提要 小米路由R4A千兆版安装breedOpenWRT教程以及救砖&#xff08;全脚本无需硬改&#xff09;【教程】保姆级红米AX6000刷UBoot和OpenW…

【Shiro】使用org.crazycake依赖的ShiroConfig

前言 整个Shiro专题中&#xff0c;这个部分是最早需要开始看的&#xff0c;主要先了解ShiroConfig都有哪些东西&#xff1b;由于这个项目使用的redis依赖是org.crazycake的shiro-redis&#xff0c;与我后面所用的不同&#xff0c;所以该部分只是简单的梳理了一下。 PS&#xf…

Hadoop高可用集群

HA高可用集群 HA介绍 什么是HA HA: High Availability&#xff0c;高可用集群&#xff0c;指的是集群7*24小时不间断服务。 为什么需要HA 在HDFS中&#xff0c;有NameNode、DataNode和SecondaryNameNode角色的分布&#xff0c;客户端所有的操作都是要与NameNode交互的&#xff…

PG数据库提示: FATAL: sorry, too many clients already

目录 场景&#xff1a; idea启动提示如下错误 翻译&#xff1a; 连接数相关查询&#xff1a; 原因分析&#xff1a; 解决方法&#xff1a; 场景&#xff1a; idea启动提示如下错误 org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyat org.pos…

运维小白必学篇之基础篇第四集:vim文本编辑器实验

vim文本编辑器实验 1、创建a.txt文件&#xff0c;并复制到/tmp/file/目录下 2、创建1.txt文件的软链接文件11.txt 3、移动a.txt文件到/mnt目录下并改名为abc.txt 4、创建d1、d2目录&#xff0c;并在d1目录中创建文件a1、a2 5、删除d1目录和d2目录 6、查看/etc/man_db.conf文件的…