ArcGIS API for JavaScript之基础篇(二)

本文是ArcGIS API for JavaScript基础篇的第二部分,介绍了WebMap、WebScene、SceneView、Popup等概念,并通过Demo展示了如何在地图上加载数据、创建幻灯片及获取地图点的地址。同时,文章解释了如何保存WebScene,并探讨了难点,如根据屏幕点击获取地址和显示幻灯片的方法。
摘要由CSDN通过智能技术生成

ArcGIS API for JavaScript之基础篇(二)

上一篇文章介绍了Map MapView SceneView的基本知识以及简单的demo。最近几天学习了WebMap WebScene Portal slide Popup等相关知识,我纯碎记录一下自己学习过程中的一些心得体会,个人理解。不对之处,还请各位见谅以及多多指教。

Demo展示

点击图中的任意一点弹出该点的经纬度和位置。

这里写图片描述

国家意外死亡人数分析。标记的大小表示每种状态下意外死亡的总数,而颜色表示速率。明亮的红色表示每10万人中意外死亡人数最多,而深绿色表示每10万人中意外死亡人数最少。

这里写图片描述

新西兰奥塔哥皇后镇周围群山在冬至(2014年6月21日)投下的阴影。每条线表示在一天中的特定时间由周围山脉投射的阴影的边缘。

这里写图片描述

加载以及创建幻灯片

这里写图片描述

基础术语解释

WebMap

网络地图不同于底图,webmap包含一些信息,比如可以加载一个显示国家意外死亡人数的网络地图。在视图中加载一个网络地图,必须要在webmap对象中的portalItem属性中引用webmap的ID。webmap可以从ArcGIS Online 或者 Portal for ArcGIS中加载。

WebScene

Web场景是整个ArcGIS平台3D地图的核心要素。它定义了场景的内容,样式,环境和幻灯片,并可以在多个ArcGIS Web和桌面应用程序之间共享。可以使用场景查看器在ArcGIS Pro和ArcGIS Online中创建,发布和使用Web场景,可通过WebScene类使用ArcGIS API for JavaScript轻松创建引人注目的3D应用程序。我们可以轻松创建自己的场景,也可以在ArcGIS Online引用可用的Web场景,并且可以在这些场景中修改或添加新的内容。要将WebScene加载到SceneView中,只需通过此类的portalItem属性在ArcGIS Online中引用Web场景项目的ID即可。

方法

updateFrom(view, options)更新与视图相关的WebScene的属性。属性包括WebScene初始视图的spatialReference、
viewingMode、clippingArea、heightModelInfo、environment、viewpoint。(这些属性在下部分SceneView的属性时讲解)

saveAs(portalItem, options)将webscene保存到新的门户项目(portalItem)。如果保存成功完成,则保存的门户项目将在WebScene的portalItem属性中设置。它将创建一个新的PortalItem并使用PortalUser.addItem()将webscene存储在Portal中。应该在保存场景之前调用updateFrom,将当前的视图属性保存在webscene中。

SceneView

属性

clippingArea用于定义本地场景的可见范围的可选裁剪区域。如果已定义,则只显示区域内的数据(包括底图)。只在本地场景可用。

constraints指定可应用于SceneView的摄像机倾斜和高度限制。属性有:altitude/clipDistance/collision/tilt
collision启用时,防止用户在本地SceneView中的表面下方导航,默认值是true。tilt视图允许倾斜的范围。

environment在视图中指定环境可视化的各种属性。属性:lighting现场照明条件,可以选择根据日期模拟太阳的照射、是否显示太阳投射的阴影、是否显示环境遮挡阴影、模拟太阳的日期和时间是否自动更新,以保持摄像机变化时的当前时间。atmosphereEnabled是否启用大气可视化,布尔值,null是false,不启用。starsEnabled是否启用星形图可视化,默认值true。

viewingMode查看模式(local或global)。全球场景将地球渲染成一个球体。本地场景在平面上渲染地球,并允许在本地化或剪辑区域中进行导航和功能显示。用户也可以导航底图表面下的本地场景的相机。根据观看模式的不同,支持的坐标系统可用。

extent作为一个Extent对象的实例代表视图内的地图的可见部分。但是不使用extent来更改SceneView 中的地图的可见部分,而应该使用camera。

弹出窗口小部件允许用户查看来自要素属性的内容。弹出窗口通过为用户提供一种简单的方法来与层进行交互和查看属性来增强Web应用程序。所有视图都包含默认的弹出窗口 此弹出窗口可以显示通用内容,这是在其标题和内容属性中设置的。当直接在Popup实例上设置内容时,它不绑定到特定的特征或图层。

PopupTemplate

在大多数情况下,弹出窗口的内容是使用特定于您的数据的模板设置的。该模板是使用PopupTemplate定义的。PopupTemplate可以在单个图形或层上进行设定。当用户选择图层内的功能时,视图的弹出框将根据分配给该图层的PopupTemplate设置其内容。它要绑定在FeatureLayer上。

属性

content提供了一个模板,用于定义每个选定功能的弹出窗口的内容。

fieldInfos定义数据集中的字段或Arcade表达式中的值如何参与弹出窗口的对象数组。每个对象都包含单个字段或表达式的属性。属性:fieldName服务器定义的字段名称或者Arcade表达式。format 与数字或日期字段一起使用的对象,提供有关如何在弹出窗口中显示值的更多详细信息。其值包括dateFormat仅与日期字段一起使用。指定日期在弹出窗口中的显示方式。place仅用于“数字”字段以指定应在弹出窗口中显示的支持小数位数。digitSeparator仅用于数字字段,表示是否使用分隔符。

Locator

表示由ArcGIS Server REST API公开的地理编码服务资源

属性

URL是必须的,代表定位器服务的ArcGIS Server REST资源的URL。

方法

locationToAddress (location,distance,requestOptions)根据给定的点找到一个地址。参数location搜索最近地址的地点。该位置应与地理编码服务的空间参考位置相同。

Slide

幻灯片存储WebScene和SceneView的几个预设属性(如底图,视点和可见图层)的快照。幻灯片包含额外的元数据,如标题,说明和缩略图,可用于在用户界面中向用户展示幻灯片。幻灯片可以创建,更新并应用到SceneView。

属性

ID幻灯片的唯一标识。

thumbnail一个编码缩略图的URL。

title幻灯片的标题。

方法

createFrom (view,options)从SceneView创建一个幻灯片,它可以添加到WebScene 演示文稿中的幻灯片中。

SimpleRenderer

SimpleRenderer 使用一个符号呈现图层中的所有特征。这个渲染器可以用来简单地可视化地理特征的位置。

属性

type渲染器的类型。

symbol渲染器用于显示图层中所有要素的符号。

难点解析

(1)如何根据用户在屏幕上点击的点找到该点的地址?

这里写图片描述

event.mapPoint是在地图上点击的点,locationToAddress事件可以根据event.mapPoint找到该点的地址,返回的response中包含address信息。

这里写图片描述

(2)如何把WebScene实例presentation属性中包含的幻灯片显示在用户界面上?

首先在用户界面上添加一个盒子放置这些幻灯片。然后每一个幻灯片都是一个盒子,其中有标题盒子和缩略图盒子,标题可以是slide.title.text或者dom.byId(“createSlideTitleInput”).value。缩略图是slide.thumbnail.url。第三点击单个幻灯片时,首先把所有的幻灯片设为没被选中状态,再把点击的幻灯片设为选中状态。

代码展示

代码中有详细解释解释呦~

友情提示:在加载信息含量比较大的地图时,外部引入API和CSS速度较慢,所以我在本地部署了API。在试验我的代码时需要做以下修改。
这里写图片描述
把这部分改为
这里写图片描述

WebMap

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Load a basic webmap</title>
    <meta name="viewport" content="maximum-scale=1, initial-scale=1, user-scalable=no">
    <link rel="stylesheet" href="/arcgis_js_api/4.6/esri/css/main.css">
    <script src="/arcgis_js_api/4.6/dojo/dojo.js"></script>

    <link rel="stylesheet" href="https://js.arcgis.com/4.6/esri/css/main.css">
    <script src="https://js.arcgis.com/4.6/"></script>
    <style>
        html,body,#viewDiv{
            padding: 0;
            
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值