ArcGIS Web APIJavaScript API4.6在客户端浏览器生成FeatureLayer并进行渲染

当在调用arcgis sever上发布的地图服务的某一图层时,需要根据特定字段进行渲染,但发布的服务并没有该字段,可使用该方法。

/********************************************************************************
 **************************FeatureLayer***********************************
 ********************************************************************************/
//新建FeatureLayer
featureLayer.queryFeatures().then(function(results){
    var features = results.features;
    for(var feature in features){

        features[feature].attributes["nico"] = feature;
    }

    var popupTemplate = {
      title: "{NAME}",
      content: [{
        type: "fields",
        fieldInfos: [{
          fieldName: "Name"
        }, {
          fieldName: "FID"
        },{
          fieldName: "XZDM"
        },{
          fieldName: "nico"
        }]
      }]
    };

    var fields = [{
        name: "XZDM",
        alias: "XZDM",
        type: "oid",
      },{
        name: "FID",
        alias: "FID",
        type: "double",
      },{
        name: "nico",
        alias: "nico",
        type: "integer",
      }];

    // See the sample snippet for the source and fields properties
    const layer = new FeatureLayer({
      source: features,
      fields: fields,
      objectIdField: "XZDM",  // field name of the Object IDs
      geometryType: "polygon",
    });

    var renderer = {
      type: "simple",  // autocasts as new SimpleRenderer()
      symbol: { type: "simple-fill" },  // autocasts as new SimpleFillSymbol()
      visualVariables: [{
        type: "color",
        field: "nico",
        stops: [{ value: 0, color: {r: 125, g: 255,  b: 103,  a: 0.3} },
                { value: 11, color: {r: 255, g: 25,  b: 123,  a: 0.6} }]
      }]
    };

    layer.renderer = renderer;
    map.add(layer);
});    

这里写了两种分类渲染方法

第一种

/********************************************************************************
 **************************SimpleRenderer***********************************
 ********************************************************************************/
//根据最大最小值以及分类数生成随机色,等间距分类
var minClassValue = 0;
var maxClassValue = 10;
var classNum = 4;
var dis = Math.round((maxClassValue - minClassValue)/classNum);

//构建stops数组
var stops = new Array();

for (var i=minClassValue; i<maxClassValue; i += dis){

    //构建颜色对象
    var color = new Object();
    color.r = parseInt(Math.random()*100);
    color.g = parseInt(Math.random()*100);
    color.b = parseInt(Math.random()*100);
    color.a = Math.round(Math.random()*10)/10;

    //构建有value和color属性对象
    var a = new Object();
    a.value = i;
    a.color = color;
    stops.push(a);
}

//SimpleRenderer
var citiesRenderer01 = {
  type: "simple",  // autocasts as new SimpleRenderer()
  symbol: { type: "simple-fill" },  // autocasts as new SimpleFillSymbol()
  visualVariables: [{
    type: "color",
    field: "nico",
    stops: stops,
  }]
};

第二种

/********************************************************************************
 **************************ClassBreaksRenderer***********************************
 ********************************************************************************/
//根据最大最小值以及分类数生成随机色,等间距分类
var minClassValue = 0;
var maxClassValue = 10;
var classNum = 4;
var dis = Math.round((maxClassValue - minClassValue)/classNum);

//构建classBreakInfos数组
var classBreakInfos = new Array();
for (var i=minClassValue; i<maxClassValue; i += dis){

    //构建颜色对象
    var color = new Object();
    color.r = parseInt(Math.random()*100);
    color.g = parseInt(Math.random()*100);
    color.b = parseInt(Math.random()*100);
    color.a = Math.round(Math.random()*10)/10;

    //构建包含type和color属性的symbol对象
    var symbol = new Object();
    symbol.type = "simple-fill",
    symbol.color = color;

    //构建包含minValue、maxValue、symbol、label的obj对象
    var obj = new Object();
    obj.minValue = i,
    obj.maxValue = i + dis,
    obj.symbol = symbol;
    obj.label = i + "~" + i + dis;

    classBreakInfos.push(obj);
}

//ClassBreaksRenderer
var citiesRenderer01 = {
  type: "class-breaks",  // autocasts as new ClassBreaksRenderer()
  field: "nico",
  classBreakInfos: classBreakInfos,
};

原文地址:https://www.cnblogs.com/mnxxz/p/8365115.html

时间: 2024-10-12 02:29:46

ArcGIS Web APIJavaScript API4.6在客户端浏览器生成FeatureLayer并进行渲染的相关文章

ArcGIS Web 地图制作指南

摘要:ArcGIS Web 地图由底图和一组相关图层构成,用户可与之交互以执行某一有意义的任务.这些地图可供广大用户使用,并且包括多比例底图.针对特定受众的业务图层以及可帮助用户深入了解感兴趣要素的信息弹出窗口.这些地图还支持可视化.编辑.分析和时间功能.它们是 Web 地图应用程序的基础,并且可以通过包括移动设备.桌面应用程序和 Web 浏览器在内的多种客户端进行查看. ArcGIS Web 地图由底图和一组相关图层构成,用户可与之交互以执行某一有意义的任务.这些地图可供广大用户使用,并且包括

客户端(浏览器端)数据存储技术概览

客户端(浏览器端)存储数据有诸多益处,最主要的一点是能快速访问(网页)数据.目前常见的浏览器端数据存储方法有:Cookies,Local Storage,Session Storage,IndexedDB. Cookies Cookies 是一种在文档内存储字符串数据最典型的方式.一般而言,cookies 会由服务端发送给客户端,客户端存储下来,然后在随后让请求中再发回给服务端.这可以用于诸如管理用户会话,追踪用户信息等事情. 此外,客户端也用使用 cookies 存储数据.因而,cookies

实践 ArcGIS Web 3D

ArcGIS 产品家族的 Web 3D 功能众多用户期待已久.从 ArcGIS 10.3.1 版本号開始,Esri 放了个大招,千呼万唤始出来的 Web 3D 功能,最终不再犹抱琵琶半遮面了. 那究竟怎样将创建和公布3D场景呢? 以下就把今天的測试过程记录下. 測试环境 硬件 处理器:Intel Core i7 4710MQ @ 2.50GHz 内存:16G 显卡:NVIDIA GeForce GT 730M OS Windows 10 Pro 软件 ArcGIS Pro 1.1.1 (必要)

客户端浏览器判断(ios .android)

在开发工程中,我们可能需要判断客户端浏览器的版本而作相应的处理:通常做法是通过浏览器的userAgent去判断浏览器版本,故在此总结下,方便以后使用. <script type="text/javascript"> //判断访问终端 var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf('T

服务器有新消息主动推送给客户端浏览器

前言 通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客户端请求--服务端响应,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高.海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应用经常面临的问题,比如金融证券的实时信息,Web 导航应用中的地理位置获取,社交网络的实时消息推送,新闻的

web API简介(四):客户端储存之IndexedDB API

概述 前篇:web API简介(三):客户端储存之Web Storage API 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据. IndexedDB API就是现代HTML5客户端储存的方法之二. IndexedDB介绍 IndexedDB是专门为大量结构化数据设计的. IndexedDB有这些特性: (1)IndexedDB数据库储存的是键值对. (2)IndexedDB是基于事务型数据库模型的. (3)IndexedDB API是异

第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+

第三百三十七节,web爬虫讲解2-PhantomJS虚拟浏览器+selenium模块操作PhantomJS PhantomJS虚拟浏览器 phantomjs 是一个基于js的webkit内核无头浏览器 也就是没有显示界面的浏览器,利用这个软件,可以获取到网址js加载的任何信息,也就是可以获取浏览器异步加载的信息 下载网址:http://phantomjs.org/download.html  下载对应系统版本 下载后解压PhantomJS文件,将解压文件夹,剪切到python安装文件夹 然后将P

C#获取客户端浏览器信息

Request.Browser.MajorVersion.ToString();//获取客户端浏览器的(主)版本号Request.Browser.Version.ToString();//获取客户端浏览器的完整版本号 Request.Browser.Platform.ToString();//获取客户端使用平台的名字 Request.UserHostAddress.ToString(); //获取远程客户端主机IP HttpRequest.Url 获取有关当前请求的 URL 的信息. HttpR

ASP.NET 表单验证方法与客户端(浏览器)服务器交互机制的故事

想到这个问题完全是一个意外吧,是在寻找另外一个问题答案的过程中,才对验证方法与浏览器服务器交互机制的关系有了清晰的认识. 先说下验证方法,验证方法分为前台验证和后台验证. 前台验证就是类似jQuery.Validate这类的插件,当然也可以我们自己写. 后台验证就是ASP.NET自带的验证控件,如RequiredFieldValidator. 记得初学.NET的时候,那会儿接触验证控件,也知道验证分为前台,后台.但是随着时间的推移,由于做的项目基本上都是公司内部使用的软件,比如OA.因为这种项目