0306-二维地图开发-地图可视化:简单符号渲染

地图可视化是地图作为信息呈现媒介的一个重要功能。通过可视化,我们可以洞察出地图上呈现的数据特征和它们之间的空间关系。目前做空间可视化这块的越来越精细,有些甚至上升到的艺术的层面。对于地图开发者来说,如果将数据在地图上可视化是入门的一个基础。目前,4.x系列API在可视化化方面提供了非常丰富的接口帮助开发者实现业务功能。在接下来的几个章节中将重点介绍地图可视化相关的API接口。
在API中,要实现地图可视化,需要重点关注以下两个包:
1. esri/renderers:渲染器
2. esri/symbols:符号
render和symbol的关系很微妙,从字眼上看好像都是为了地图的可视化,但是它们的所提供的接口层次还是不太一样。render强调一份数据根据属性值而采用多少种符号来表达。symbol更多是针对一份数据而采用一种符号。所以,你会发现,new一个render的时候,同时需要new一个symbol。所以说,render和symbol是包含的关系。
首先我们来看一个点图层、线图层和面图层如何来渲染。先看效果图:
这里写图片描述
上面这份地图包含了全球主要城市的点图层、全美主要高速公路的线图层以及全美行政州界的面图层。
实现上面的这种可视化效果,我们先发布一份包含这三个图层的要素服务(FeatureServer),我这里是之前使用了Esri提供的在线服务。符号化要素的关键代码编写过程如下:
1. 分别给三个图层new一个FeatureLayer对象以加载要素服务的图层
2. 给每个FeatureLayer的renderer属性赋予相应的渲染器(render)
3. 点要素采用SimpleMarkerSymbol符号化
4. 线要素采用SimpleLineSymbol符号化
5. 面要素采用SimpleFillSymbol符号化
譬如,点要素的符号化关键完整代码如下:

/****************************************
 * 设置渲染器,使用单个符号可视化所有城市
  ****************************************/
var citiesRenderer = {
    type: "simple", //自动转换为SimpleRenderer对象,SimpleRenderer是简单渲染器对象,采用单一符号对几何进行渲染
    symbol: {
       type: "simple-marker", //自动转换为SimpleMarkerSymbol对象,用于渲染具有简单形状和颜色的二维点几何图形。
       size: 10,
       color: "#FF4000",
       outline: { //自动转换成SimpleLineSymbol对象
             color: [255, 64, 0, 0.4], //自动转换成Color对象
             width: 7
        }
    }
};
var citiesLyr = new FeatureLayer({
    url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/WorldCities/FeatureServer/0",
     renderer: citiesRenderer
});
myMap.add(citiesLyr);

你可能已经发现,render和symbol对象的构造采用的是JSON的格式直接定义,而不是new一个对象,采用这种方向,程序在运行时会自己转换成相应的对象。当然,这种方向有优点也有缺点,优点是JSON的可读性比较高,习惯了JSON的编写的话,也比较顺手。缺点是,必须要在定义的时候,把全部的属性都给设置好,后续再去调整会相对麻烦。完整的代码如下&#x

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值