设置子图层的渲染器
MapImageLayer 的 sublayers 的属性允许您为地图服务中的图层动态地设置渲染器。
程序完整源代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<title>MapImageLayer - set renderers on sublayers - 4.6</title>
<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;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<script>
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/MapImageLayer",
"dojo/domReady!"
],
function(
Map, MapView, MapImageLayer
) {
/*****************************************************************
* 为每个子图层设置渲染器
*****************************************************************/
// 城市样式
var citiesRenderer = {
type: "simple",
symbol: {
type: "simple-marker",
size: 3,
color: "blue",
style: "circle",
outline: {
width: 0.5,
color: "gray"
}
},
label: "Cities"
};
// 州样式
var statesRenderer = {
type: "simple",
symbol: {
type: "simple-fill",
style: "none",
outline: {
width: 0.5,
color: "gray"
}
},
label: "State boundaries"
};
// 高速路样式
var highwaysRenderer = {
type: "simple",
symbol: {
type: "simple-line",
style: "none",
width: 0.7,
color: "white"
},
label: "Interstate highway"
};
/*****************************************************************
* 应用渲染器
*****************************************************************/
var layer = new MapImageLayer({
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
sublayers: [
{
id: 2,
renderer: statesRenderer,
opacity: 0.4
},
{
id: 1,
renderer: highwaysRenderer,
opacity: 0.8
},
{
id: 0,
renderer: citiesRenderer,
opacity: 0.6
}]
});
var map = new Map({
basemap: "dark-gray",
layers: [layer]
});
var view = new MapView({
container: "viewDiv",
map: map,
zoom: 6,
center: [-83.114, 36.921]
});
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
(完)