zoukankan      html  css  js  c++  java
  • arcgis api for javascript 添加图层时设置标注,自定义符号

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="gb2312">
        <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
        <title>安监???</title>
    
        <link rel="stylesheet" href="js/dist/css/calcite-bootstrap.min-v0.2.css">
        <link rel="stylesheet" href="js/dist/css/calcite-maps-arcgis-4.x.min-v0.2.css">
        <link rel="stylesheet" href="js/esri/css/main.css">
        <script src="js/init.js"></script>
    
        <style>
            html,
            body,
            #viewDiv {
                padding: 0;
                margin: 0;
                height: 100%;
                 100%;
            }
    
            .or-wrap {
                background-color: #e0e0e0;
                height: 1px;
                margin: 2em 0;
                overflow: visible;
            }
    
            .or-text {
                background: #fff;
                line-height: 0;
                padding: 0 1em;
                position: relative;
                top: -.75em;
            }
    
            .symbol-text {
                background: #fff;
                line-height: 0;
                padding: 0 1em;
                position: relative;
                top: -.1em;
            }
    
        </style>
    
        <script>
            require([
                "esri/Map",
                "esri/views/SceneView",
                "esri/config",
                "esri/WebScene",
                "esri/layers/Layer",
                "esri/layers/FeatureLayer",
                "esri/layers/GraphicsLayer",
                "esri/layers/SceneLayer",
                "esri/layers/TileLayer",
                "esri/Graphic",
                "esri/widgets/Expand",
                "esri/widgets/Home",
                "esri/geometry/Extent",
                "esri/Viewpoint",
                "esri/geometry/Polygon",
                "esri/core/watchUtils",
                "dojo/_base/array",
    
                'script/Draw.js',
                'script/Draw2.js',
                'script/Custom.js',
                'script/Measure.js',
                'script/MeasureLenght.js',
                'script/MeasureArea.js',
                'script/MeasureConfig.js',
                'script/QueryByRectangle.js',
                'script/QueryByPolygon.js',
                'script/QueryByPoint.js',
                'script/QueryLayerConfig.js',
                'script/GeoQueryLayerConfig.js',
    
                'script/EditPoint.js',
                'script/EditPointConfig.js',
                "script/CustiomSymbolConfig.js",
                "script/CustomAnimation.js",
                "script/EditPolygonConfig.js",
                "script/EditPointLayerConfig.js",
                "esri/tasks/QueryTask",
                "esri/tasks/support/Query",
                "esri/Color",
                "esri/layers/BaseTileLayer",
    
                "dojo/on",
                "dojo/dom",
                "dojo/domReady!"
            ],
                function (
                    Map, SceneView, esriConfig, WebScene, Layer, FeatureLayer, GraphicsLayer, SceneLayer, TileLayer, Graphic, Expand,
                    Home, Extent, Viewpoint, Polygon, watchUtils, arrayUtils,
                    Draw, Draw2, Custom, Measure, MeasureLenght, MeasureArea, MeasureConfig, QueryByRectangle, QueryByPolygon, QueryByPoint,
                    QueryLayerConfig, GeoQueryLayerConfig,
                    EditPoint, EditPointConfig, CustiomSymbolConfig, CustomAnimation, EditPolygonConfig, EditPointLayerConfig,
                    QueryTask, Query, Color, BaseTileLayer,
                    on, dom
                ) {
                    function getUniqueValueSymbol(name, color) {
                        //点符号用图标表示。要清楚地看到点的位置
                        //我们将图标垂直移动并添加callout行。这条线连接了与点特征位置相连接的符号。
                        //图标大小
                        return {
                            type: "point-3d",
                            symbolLayers: [{
                                type: "icon",
                                resource: {
                                    href: name
                                },
                                size: 30,
                                outline: {
                                    color: "white",
                                    size: 2
                                }
                            }],
    
                            // 垂直偏移将符号垂直移动
                            verticalOffset: {
                                screenLength: 10,
                                maxWorldLength: 0,
                                minWorldLength: 0
                            },
    
                            callout: {
                                type: "line",
                                color: "white",
                                size: 1,
                                border: {
                                    color: color
                                }
                            }
                        };
                    }
    
                    var featureLayer;
    
                    var map = new WebScene({
                        basemap: "hybrid"
                    });
    
    
                    // 视图和home按钮的初始范围
                    var initialExtent = new Extent({
                        xmin: 117.2,
                        xmax: 117.4,
                        ymin: 39.2,
                        ymax: 39.4,
                        spatialReference: 4326
                    });
                    var view = new SceneView({
                        container: "viewDiv",
                        extent: initialExtent,
                        map: map
                    });
    
                    //添加标注开始----------------------------------------------------------
                    //指定标注录入的图层
                    var fUrl = "https://services8.arcgis.com/91J2IDFbEdu7LCaR/arcgis/rest/services/enterprise/FeatureServer/0";
                    //var fUrl = "https://2108aa73.all123.net/arcgis/rest/services/Hosted/enterprise/FeatureServer/0";
                    //根据enterptype字段定义唯一值渲染器,图片符号形式
                    var renderer = {
                        type: "unique-value", // autocasts as new SimpleRenderer()
                        field: "enterptype",
                        uniqueValueInfos: [{
                            value: 20,
                            symbol: getUniqueValueSymbol("image/Museum.png", "#D13470")
                        }, {
                            value: 30,
                            symbol: getUniqueValueSymbol("image/Restaurant.png", "#F97C5A")
                        }, {
                            value: 40,
                            symbol: getUniqueValueSymbol("image/Restaurant.png", "#F97C5A")
                        }, {
                            value: 50,
                            symbol: getUniqueValueSymbol("image/Restaurant.png", "#F97C5A")
                        }],
                        //根据预警级别设置符号颜色
                        visualVariables: [{
                            type: "color",
                            field: "warnlevel",
                            stops: [
                                { value: 0, color: "green" },
                                { value: 1, color: "blue" },
                                { value: 2, color: "red" },
                                { value: 3, color: "yellow" }
                            ]
                        }]
                    };
                    featureLayer = new FeatureLayer({
                        url: fUrl,
                        id: "enterpriselayer",
                        renderer: renderer,
    elevationInfo: {
    // 高程模式,将点放在建筑物顶部或其他场景三维物体上,否则与三维模型一起展示时会被覆盖掉
    mode: "relative-to-scene"
    },

    visible: true,
                        outFields: ["*"],
                        //设置标注
                        labelingInfo: [
                            {
                                labelExpressionInfo: {
                                    value: "{Name}"
                                },
                                symbol: {
                                    type: "label-3d", // autocasts as new LabelSymbol3D()
                                    symbolLayers: [{
                                        type: "text", // autocasts as new TextSymbol3DLayer()
                                        material: {
                                            color: "white"
                                        },
                                        // we set a halo on the font to make the labels more visible with any kind of background
                                        halo: {
                                            size: 1,
                                            color: [50, 50, 50]
                                        },
                                        size: 10
                                    }]
                                }
                            }],
                        labelsVisible: true
                    });
                    map.add(featureLayer);
                });
        </script>
    </head>
    
    <body>
        <div id="viewDiv"></div>
    </body>
    </html>
    

      

  • 相关阅读:
    [offer_53-1] 在排序数组中查找数字 I (开启编辑看 i,j,m)
    window10 办公软件word、execel、ppt突然变得很卡顿如何解决?
    数组中第k大的数
    heapq 堆
    每日一题 482. 密钥格式化
    算法笔记Go!
    DFS与BFS的python实现
    无向图中找到长度为k的“链”
    无序数组中找一个比左边都大、右边都小的数
    SRM(空域富模型隐写分析)
  • 原文地址:https://www.cnblogs.com/taoshengyujiu/p/8032026.html
Copyright © 2011-2022 走看看