arcgis js(六)设置不透明度

《ArcGIS Runtime for Android 100.2.1学习笔记》二:通过WebTiledLayer加载天地图 1、WebTiledLayer    WebTiledLayer是100.1后新加入的图层类型,用于定义一个可扩展的切片图层,该图层根据URL从切片服务器中请求图像,它提供了一种将非ArcGIS Services作为图层继承到地图中的简单方法。    URL通常遵循:http://{subDomain}.tile.opencyclemap.org/cycle/{level}/{col}/{row}... 阅读详情

1、在上一章节我们已经能够自由切换天地图底图了,这一节继续接着上节的代码往里面添加新功能,我们知道,在地图学中地图是可以不断叠加的,即使像天地图这么庞大的地图显示也是由不同的图层叠加现实的,当然它用的是瓦片形式,比如影像地图上面叠加影像注记,就得到了我们看到的这种形式,包括在上面进行的点、线、面等绘图功能,都是一层一层的图层,既然是图层就会发生覆盖,我们经常会对比上面和下面的图层,一种方式是采用swipe卷帘工具,但是它不能看到叠加的情况,一般我们都是设置最上面一层的图层的不透明度来实现上下层的对比。

2、在英文中opacity是不透明度的意思,在arcgis js中opacity的取值范围是[0,1],0代表完全透明,1代表完全不透明。

3、在地图上加载其他图层的方式也比较简单,这里采用url的形式,我是在arcgis server上发布数据,可以发布在本地,也可以是服务器上的,没有服务器的小伙伴用本机的arcgis发布一个本地服务即可。如何安装arcgis server、如何发布arcgis服务请在网上查找资料,实在搞不定的可以留言给我。需要注意的是发布的服务图层和底图应在同一个坐标系。

4、假设提取了某地的图斑信息,发布为arcgis服务,用esri/widgets/LayerList将需要做的操作放置到列表当中,这里的功能主要有"全局显示"、"图层信息"、"增加不透明度"、"减少不透明度",具体代码如下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>ArcGIS API for JavaScript</title>

    <link rel="stylesheet" href="https://js.arcgis.com/4.20/esri/themes/light/main.css">
    <script src="https://js.arcgis.com/4.20/"></script>

    <style>
        html,
        body,
        #viewDiv {
            height: 100%;
            width: 100%;
            margin: 0;
            padding: 0;
        }
    </style>

    <script>
        require(["esri/config",
            "esri/Map",
            "esri/views/MapView",
            "esri/layers/FeatureLayer",
            "esri/layers/WebTileLayer",
            "esri/layers/MapImageLayer",
            "esri/widgets/LayerList",
            "esri/widgets/BasemapLayerList",
            "esri/widgets/Expand",
            "esri/geometry/SpatialReference",
            "esri/geometry/Point",
            "esri/layers/support/TileInfo",
        ],
            function (esriConfig, Map, MapView, FeatureLayer, WebTileLayer, MapImageLayer,
                LayerList, BasemapLayerList, Expand,
                SpatialReference, Point, TileInfo) {
                var tiandituBaseUrl = "http://{subDomain}.tianditu.com"; //天地图服务地址
                var token = ""; //天地图token,在官网申请
                var tileInfo = new TileInfo({
                    "rows": 256,
                    "cols": 256,
                    "origin": {
                        "x": -180,
                        "y": 90
                    },
                    "spatialReference": {
                        "wkid": 4490
                    },
                    "lods": [
                        { "level": "1", "scale": 295829355.45, "resolution": 0.703125 },
                        { "level": "2", "scale": 147914677.725, "resolution": 0.3515625 },
                        { "level": "3", "scale": 73957338.8625, "resolution": 0.17578125 },
                        { "level": "4", "scale": 36978669.43125, "resolution": 0.087890625 },
                        { "level": "5", "scale": 18489334.715625, "resolution": 0.0439453125 },
                        { "level": "6", "scale": 9244667.3578125, "resolution": 0.02197265625 },
                        { "level": "7", "scale": 4622333.67890625, "resolution": 0.010986328125 },
                        { "level": "8", "scale": 2311166.839453125, "resolution": 0.0054931640625 },
                        { "level": "9", "scale": 1155583.4197265625, "resolution": 0.00274658203125 },
                        { "level": "10", "scale": 577791.7098632812, "resolution": 0.001373291015625 },
                        { "level": "11", "scale": 288895.8549316406, "resolution": 0.0006866455078125 },
                        { "level": "12", "scale": 144447.9274658203, "resolution": 0.00034332275390625 },
                        { "level": "13", "scale": 72223.96373291015, "resolution": 0.000171661376953125 },
                        { "level": "14", "scale": 36111.98186645508, "resolution": 0.0000858306884765625 },
                        { "level": "15", "scale": 18055.99093322754, "resolution": 0.00004291534423828125 },
                        { "level": "16", "scale": 9027.99546661377, "resolution": 0.000021457672119140625 },
                        { "level": "17", "scale": 4513.997733306885, "resolution": 0.000010728836059570312 },
                        { "level": "18", "scale": 2256.9988666534423, "resolution": 0.000005364418029785156 },
                        { "level": "19", "scale": 1128.4994333267211, "resolution": 0.000002682209014892578 }
                    ]
                });

                //影像地图
                var tdtImageLayer = new WebTileLayer({
                    urlTemplate: tiandituBaseUrl + "/DataServer?T=img_c&x={col}&y={row}&l={level}&tk=" + token,
                    subDomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
                    tileInfo: tileInfo,
                    spatialReference: { wkid: 4490 },
                    title: "天地图影像地图",
                    visible: true
                });

                //影像注记
                var tdtAnnoImageLayer = new WebTileLayer({
                    urlTemplate: tiandituBaseUrl + "/DataServer?T=cia_c&x={col}&y={row}&l={level}&tk=" + token,
                    subDomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
                    tileInfo: tileInfo,
                    spatialReference: { wkid: 4490 },
                    title: "天地图影像注记",
                    visible: true
                });

                //矢量地图
                var tdtVecLayer = new WebTileLayer({
                    urlTemplate: tiandituBaseUrl + "/DataServer?T=vec_c&x={col}&y={row}&l={level}&tk=" + token,
                    subDomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
                    tileInfo: tileInfo,
                    spatialReference: { wkid: 4490 },
                    title: "天地图矢量地图",
                    visible: false
                });

                //矢量注记
                var tdtAnnoVecLayer = new WebTileLayer({
                    urlTemplate: tiandituBaseUrl + "/DataServer?T=cva_c&x={col}&y={row}&l={level}&tk=" + token,
                    subDomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
                    tileInfo: tileInfo,
                    spatialReference: { wkid: 4490 },
                    title: "天地图矢量注记",
                    visible: false
                });

                const map = new Map({
                    basemap: {
                        baseLayers: [tdtImageLayer, tdtAnnoImageLayer, tdtVecLayer, tdtAnnoVecLayer]
                    }

                });

                //定位到济南市中心
                var cityCenter = new Point(116.985, 36.671, new SpatialReference({ wkid: 4490 }));
                const view = new MapView({
                    map: map,
                    center: cityCenter,
                    zoom: 13,
                    container: "viewDiv",
                    ui: {
                        components: ["zoom", "compass"]
                    },
                });

                let basemapLayerList = new BasemapLayerList({
                    view: view,

                });

                var layerListExpand = new Expand({
                    expandIconClass: "esri-icon-layer-list",
                    view: view,
                    content: basemapLayerList
                });
                view.ui.add(layerListExpand, "top-right");

                const featureLayer = new FeatureLayer({
                    url: "http://localhost:6080/arcgis/rest/services/XC/xcgengdibianhua/MapServer",
                    title: "变化图斑"
                });
                map.add(featureLayer);

                function defineActions(event) {
                    var item = event.item;
                    if (item.title === "变化图斑") {
                        item.actionsSections = [
                            [
                                {
                                    title: "全局显示",
                                    className: "esri-icon-zoom-out-fixed",
                                    id: "full-extent"
                                },
                                {
                                    title: "图层信息",
                                    className: "esri-icon-description",
                                    id: "information"
                                }
                            ],
                            [
                                {
                                    title: "减少透明度",
                                    className: "esri-icon-up",
                                    id: "increase-opacity"
                                },
                                {
                                    title: "增加透明度",
                                    className: "esri-icon-down",
                                    id: "decrease-opacity"
                                }
                            ]
                        ];
                    }
                }

                view.when(function () {
                    var layerList = new LayerList({
                        view: view,
                        listItemCreatedFunction: defineActions
                    });

                    layerList.on("trigger-action", function (event) {
                        var visibleLayer = featureLayer;
                        var id = event.action.id;

                        if (id === "full-extent") {
                            view.goTo(visibleLayer.fullExtent).catch(function (error) {
                                if (error.name != "AbortError") {
                                    console.error(error);
                                    alert(error);
                                }
                            });
                        } else if (id === "information") {
                            window.open(visibleLayer.url);
                        } else if (id === "increase-opacity") {
                            if (visibleLayer.opacity < 1) {
                                visibleLayer.opacity += 0.2;
                            }
                        } else if (id === "decrease-opacity") {
                            if (visibleLayer.opacity > 0) {
                                visibleLayer.opacity -= 0.2;
                            }
                        }
                    });
                    view.ui.add(layerList, "top-right");
                });


            });


    </script>


</head>

<body>

    <div id="viewDiv"></div>

</body>

</html>

5、代码说明:首先用FeatureLayer实例化一个对象用来加载服务数据,将url和title作为参数放到构造函数中,定义layerList传入列表对象,列表对象用一个列表对象函数defineActions创建,在该函数里面定义item,每个item都有三个属性:title、className、id,title负责显示在web端,id用于判断点击的是哪个item,这些事件会在"trigger-action"中触发,来执行具体的操作,效果如下:

ArcGIS API for JavaScript 4.X在SceneView(三维场景)下设置透明背景或图片背景 在SceneView(三维场景)下设置透明背景或设置图片背景 阅读详情

相关推荐

arcgis api 4(1),Web前端基础三剑客学习知识分享

正值金三银四招聘旺季,很多小伙伴都询问我有没有前端方面的面试题,特地整理出来赠送给大家!资料领取方式:点击这里前往免费获取包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)正值金三银四招聘旺季,很多小伙伴都询问我有没有前端方面的面试题,特地整理出来赠送给大家!资料领取方式:点击这里前往免费获取资料领取方式:点击这里前往免费获取。

2401_84092809的博客 479

ArcGIS API For JavaScript - 配置ArcGIS API For JavaScript3.17函数库,在内网使用ArcGIS(IIS)

ArcGIS API For JavaScript - 配置ArcGIS API For JavaScript3.17函数库,在内网使用ArcGIS(IIS)

技术共享,共同进步! 2231

ArcGIS API for JS之基础篇(三)可视化

ArcGIS API for JS之基础篇(三)可视化 终于到家了,可以接着写有意思的东西。如何把数据简洁美观易读的呈现出来,数据可视化内容小结可以给你们惊喜。这篇文章跨域了美赛+新年,它非常有魅力,希望大家可以多多实践! Demo 首先看一个显示井和地震之间关系的动图,把井和地震的数据同时渲染在视图上,我们可以看到地震频发与挖井是否相关。点击井和地震的符号可以显示他们的详细信息,点击...

weixin_41665391的博客 6673

ArcGIS API for JavaScript 3.x 添加动态波纹标注

模拟波纹效果基于 arcgis 3.x,先看效果图:实现思路波纹是由两个图层组成,圆点+动态圆,主要借助于和这两个类。Point创建点,SimpleMarkerSymbol创建一个圆,并且通过api() 来定时控制圆的大小和透明度。如果地图中只要一个波纹标注,可通过定时器实现即可,但是如果页面地图中有多个点的标注,开一堆定时器并不容易操控。后来我的思路是把定位的图层先放到一个数组中,等所有的图层标注完成后,在开一个定时器来统一设置圆图层的大小和透明度。

1018

ArcGIS 地图中圆形区域的动态绘制与交互应用

本文详细介绍了如何在ArcGIS地图中实现圆形区域的动态绘制与交互应用。通过ArcGIS API for JavaScript,开发者可以轻松创建圆形几何图形,并为其添加符号样式。文章重点讲解了如何实现用户交互式绘制、拖拽调整圆心与半径,并探讨了结合空间查询与滑块控件进行动态数据分析的进阶场景,为地理围栏、商业选址等实际应用提供了完整的技术方案。

weixin_29003437的博客 178

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

那么,什么是AI Agent?简单来说,AI Agent是一种能够感知环境、做出决策并采取行动的自主系统。自主性:能够在没有人类直接干预的情况下运行,对自己的行为和内部状态有一定的控制权。反应性:能够感知环境的变化,并及时做出反应。主动性:不仅能够对环境变化做出反应,还能够主动地设定目标并采取行动实现这些目标。社会性:能够与其他Agent(包括人类和人工智能)进行交互、协作和竞争。它们可以全天候不间断地监控和处理海量信息,大大提升信息处理能力;

AI大模型应用之禅 188

arcgis api for js 设置图层透明度

出于某些原因,需要知道之前设置的透明度值,发现可以通过向元素附加数据的方法来获得数据,记录一下 1.建立 objOpactiy = new esri.dijit.HorizontalSlider({                     name: "opacitySlider",                     minimum: 0,                     max...

qq_38679993的博客 4904

LAMMPS ReaxFF模拟后处理:如何用Python精准追踪C-N键的断裂与形成?

本文详细介绍了如何利用Python对LAMMPS ReaxFF模拟结果进行后处理,精准追踪C-N键的断裂与形成过程。通过解析键级输出文件、构建原子类型映射字典,并实现C-N键的统计与可视化,为材料科学和催化反应研究提供了高效的数据分析解决方案。文章特别强调了ReaxFF力场在断键分析中的关键作用,并提供了完整的Python代码实现。

weixin_28706923的博客 355

【十】ArcGIS API for Javascript之专题图的制作(一)

一、专题地图专题地图(thematic map),又称特种地图,即着重表示一种或数种自然要素或社会经济现象的地图。专题地图的内容由两部分构成:①专题内容。图上突出表示的自然或社会经济现象及其有关特征。②地理基础。用以标明专题要素空间位置与地理背景的普通地图内容,主要有经纬网、水系、境界、居民地等。专题地图制作是按照特定的专题渲染地图的过程。

佯佯DESIGNER 4507

VL53L0X加盖玻片后精度暴跌?手把手教你完成串扰校准(CrossTalk Calibration)

本文详细解析了VL53L0X激光测距传感器加盖玻片后精度下降的原因,并提供了串扰校准(CrossTalk Calibration)的完整解决方案。通过分步指导和实用代码示例,帮助工程师恢复毫米级测距精度,适用于智能门锁、扫地机器人等应用场景。

weixin_33708432的博客 539

睿尔曼超轻量仿人机械臂-ROS第一篇 启动机械臂的Moveit

本文主要讲述了睿尔曼六轴机械臂在ROS中的功能包配置,及如何根据文件启动Moveit做仿真。

realman_Rop的博客 7489

ArcGIS API for JavaScript-图层简介

图层是地图的最基本组成部分。它是代表实际现象的图形或图像形式的空间数据的集合。图层可能包含存储矢量数据的离散要素,也可能包含存储栅格数据的连续像元/像素。 地图可能包含不同类型的图层。有关API中可用的每种图层类型的广泛概述,请参见Layer的类说明中的此表。 所有图层都从Layer继承属性,方法和事件。本教程将讨论其中的一些常用属性。要了解特定于不同图层类型的属性,请在样本中搜索该图层类型(例如SceneLayer)。 在完成以下步骤之前,您应该熟悉视图和地图。 1.创建一个Map,一个SceneView

u011143338的博客 1033

多源异构数据融合(Kaggle+Google Trends联合分析)

本文详细介绍了如何利用Python实现多源异构数据融合,以Kaggle电商销售数据与Google Trends搜索指数为例,展示了数据清洗、预处理、时间对齐、数据合并、相关性分析、回归建模和可视化全过程。数据预处理与内存优化通过分块加载、数据类型转换和缺失值处理,有效降低了大规模数据在内存中的占用,并确保数据质量。时间对齐与数据融合策略采用重采样与内连接方法对齐不同数据源的时间维度,实现了高质量数据的融合,为后续联合分析奠定基础。模型构建与分析。

闲人编程的博客 1016

用arcgis for javascript 开发一个三维地图(入门案例)

地表类型,可以是 “none”、“world-elevation”、“world-elevation-stencil”、“map-ground”、“map-surface”、“tile-ground” 等。:设置地表是否和地球一样进行 180 度的旋转,默认为 true。:设置地表的高度是否相对于地球表面而言,默认为 true。:地表的海拔高度值,可以是一个数字或者返回数字的函数。:地表图层信息,可以设置多个图层来实现不同的地表效果。:设置是否显示地表,默认为 true,即显示地表。

jieyucx的博客 1853

基于通义千问2.5-7B-Instruct的技术深度解析

通义千问2.5-7B-Instruct是一个基于Transformer架构的大型语言模型,具有70亿参数。它通过自注意力机制和前馈神经网络处理输入序列,能够捕捉长距离依赖关系,适用于多种NLP任务。微调是指在预训练模型的基础上,使用特定任务的数据进行进一步训练,以使模型更好地适应特定任务。微调可以显著提高模型在特定任务上的性能。通义千问2.5-7B-Instruct是一个强大的语言模型,适用于多种NLP任务。通过深入理解其架构、微调方法和核心代码,可以更好地应用于实际场景。

zhangjiaofa的专栏 1567

ABB机器人与S7-1200PLC实现位置坐标数据发送和接收的具体方法

ABB机器人与S7-1200PLC实现位置坐标数据发送和接收的具体方法

Robot_PLC_HMI_Automation 2916

ArcGIS JS 基础教程(31):体元系列 - VoxelVariable 与 VoxelVolume

ArcGIS JS 基础教程(31):体元系列 - VoxelVariable 与 VoxelVolume。

非科班Java出身GISer的博客 391

RK3588更新NPU驱动的方法

想要在 RK3588 上跑一下 deepseek 的大模型,发现目前的内核提供的 NPU 驱动比较低,无法支持新的大模型,所以需要更新一下我们的 NPU 驱动本次更新的NPU驱动仅适用于RK3588和RK3676系列。

荻夜的博客 2151

ArcGIS API For Javascript_4.8-渲染器SimpleRenderer

SimpleRenderer require(["esri/renderers/SimpleRenderer"], function(SimpleRenderer) { /* code goes here */ }); Inheritance: SimpleRenderer->Renderer->Accessor SimpleRenderer使用一个符号呈现图层中的所有要素...

weixin_30478757的博客 417

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ArcGIS For JavaScript API 添加 terrain basemap with operational layer(与业务层相关的地形底图)————(二)

描述 此示例显示了如何添加到您的应用程序的多个层。该示例包含三个层次,一个底图,人口统计数据,并最终与参考层边界和地名。   The World Terrain Base,ArcGIS Online上缓存的地图服务。 首先加入。此服务被设计为用作附加层,如人口统计数据,显示在最前面的底图。 其次,自定义数据添加到地图中。这ArcGIS.com网站或您自己发布的地图服务可以参考的数据。

X-rapido的专栏 3195

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

arcgis js 移除某一个点_lax.js(scroll动画插件)介绍

本文是对github上开源项目laxxx的介绍,不到10天已有3500+star。 传送门1. 简介laxxx是一款简单轻巧(<2kb gzipped)的javascript插件,当你滚动时创建流畅和美丽的动画的开源项目,通过监听scroll,使元素在页面上活跃起来。2. 初始化将lax.js导入后需要初始化插件window.onload = function() { lax.set...

weixin_35519039的博客 1252

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ArcGIS API For Javascript_4.8-渲染器Renderer

渲染器:Renderer 类:esri / renderers / Renderer 继承: Renderer->Accessor 子类: ClassBreaksRenderer , HeatmapRenderer , SimpleRenderer , UniqueValueRenderer 渲染器定义如何在以下图层类型之一中直观地表示每个要素: Renderer对象包含...

weixin_30292745的博客 396

ArcGIS API 开发 文档解析——View.hitTest()

ArcGIS API 开发 文档解析——View.hitTest() –> 异步的 HitTestResult对象数组 官方释义:返回与指定屏幕坐标相交的图形(具体可参考返回的数据结构示例) ,每次单击交互查找鼠标指针下的所有对象。 两个参数:screenPoint, options 第一个参数:screenPoint 单击视图获取的屏幕坐标,一般可以通过View.on()事件触发得到,这也是为什么通常情况下View.hitTest()方法通常写在View.on()方法内部的原因 第二个参数:opt

debbie_luo1211571826的博客 2528

使用ArcGIS JS API与Tween.js实现图层闪烁动画效果

在本文中,我们使用ArcGIS JS API 和tween.js库创建了一个简单的图层闪烁动画效果。我们使用tween.js库来创建Tween对象,该对象将图层的不透明度从1渐变到0,然后再渐变回来。我们使用使动画无限循环,使用yoyo(true)使动画在循环时反转方向,使图层看起来像是在闪烁。希望这篇文章能够帮助您在自己的地图应用程序中创建动画效果。

qq_37155408的博客 1489

arcgis-for-js将自定的的图层载入

在data return 中定义一个图层 workLayer 加载并使用BaseLayerView2D功能模块 加载并使用Layer功能模块,加入TileInfo功能模块 官网参考 获取图片和坐标信息 业务中的图片是从arcgis map中导出的含有地理信息的图片,一共有两个文件:一个jpg图片一个存放六个地理参数的文件 在methods中定义了两个方法,可以合并成一个 //添加图片的方法 addImageLayer: function (name) { let this.

孙霸天的专栏 1011

三维面片透明度设置:从图形原理到GIS与Web开发的实践指南

在计算机图形学中,透明度是控制像素颜色与背景混合的关键属性,其核心原理在于渲染管线中的混合计算。通过调整Alpha通道值,开发者可以实现视觉层级管理、数据渐变表达等核心功能,这在地理信息系统、三维建模和Web可视化等领域具有极高的技术价值。具体到应用场景,无论是使用WebGL进行自定义图形渲染,还是在ArcGIS Pro中制作专题地图,亦或是在Mapbox GL JS中创建交互式高亮区域,理解并正确应用透明度设置都是实现预期视觉效果和保障渲染性能的基础。本文将以面片透明度为切入点,深入剖析其背后的图形学概念

weixin_33795743的博客 306
上一篇: arcgis js(五)切换底图
下一篇: arcgis js(七)鼠标事件
之乎者也哦
博客等级 码龄8年 7165粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值