如何使用ArGIS api for javascript在地图右下角显示图例

如何使用ArGIS api for javascript在地图右下角显示图例,javascript,arcgis-js-api,Javascript,Arcgis Js Api,我想在地图的右下角显示图例图标。单击图例按钮,我必须显示一些带有名称的符号,而不添加任何图层。你能给我推荐一些在地图上显示图例的示例程序或链接吗 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-sca

我想在地图的右下角显示图例图标。单击图例按钮,我必须显示一些带有名称的符号,而不添加任何图层。你能给我推荐一些在地图上显示图例的示例程序或链接吗

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" />
    <title>Predominant Crop Opacity</title>
    <link rel="stylesheet" href="//js.arcgis.com/3.12/dijit/themes/claro/claro.css">
    <link rel="stylesheet" href="//js.arcgis.com/3.12/esri/css/esri.css" />
    <style>
      html, body, #map {
        height: 100%;
        margin: 0;
        background-color: #000000;
      }

      .esriAttribution {
        background: none;
        color: #ffffff;
      }

      #info {
        width: 14.0625em;
        background-color: #000;
        color: #fff;
        position: absolute;
        left: 0;
        bottom: 0;
        padding-left: 10px;
        padding-top: 10px;
        font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
        border-top: 2px solid #ffffff;
        border-right: 2px solid #ffffff;
        border-top-right-radius: 20px;
      }
    </style>

    <script src="//js.arcgis.com/3.12/"></script>

    <script>
      var map;
      require([
        "dojo/_base/array",
        "dojo/number",
        "esri/Color", "esri/dijit/Legend",
        "esri/geometry/Extent", "esri/InfoTemplate", "esri/layers/FeatureLayer",
        "esri/map", "esri/renderers/UniqueValueRenderer",
        "esri/symbols/SimpleFillSymbol", "esri/symbols/SimpleLineSymbol", "dojo/domReady!"
      ], function (array, number, Color, Legend, Extent, InfoTemplate, FeatureLayer, Map, UniqueValueRenderer,
        SimpleFillSymbol, SimpleLineSymbol){

        map = new Map("map", {
          minScale: 18489297,
          maxScale: 1245436,
          extent: new Extent({
            "xmax": -7218373,
            "xmin": -15045524,
            "ymax": 7571201,
            "ymin": 2160682,
            "spatialReference": { "wkid": 102100}
          })
        });

        // --------------------------------------------------------------------
        // Custom function to format the numbers for crop values
        // e.g., 126744 becomes 126,744
        // --------------------------------------------------------------------
        formatNumber = function (value, key, data){
          return number.format(value, {places: 0, locale: "en-us"});
        };

        var featureLayerOptions = {
          mode: FeatureLayer.MODE_AUTO,
          outFields: ["M163_07", "M172_07", "M188_07", "M193_07", "M217_07", "COUNTY", "STATE", "AREA", "M086_07"],
          infoTemplate: new InfoTemplate("${COUNTY}, ${STATE}",
            "<b>Corn for grain:</b> ${M163_07:formatNumber}<br><b>All wheat for grain:</b> ${M172_07:formatNumber}<br><b>Upland cotton:</b> ${M188_07:formatNumber}<br><b>Soybeans for beans:</b> ${M193_07:formatNumber}<br><b>Vegetables:</b> ${M217_07:formatNumber}")
        };
        var featureLayer = new FeatureLayer("//services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/USA_County_Crops_2007/FeatureServer/0",
          featureLayerOptions);

        // --------------------------------------------------------------------
        // Custom function to compute the crop that has the largest value
        // in a particular count. Using a custom function with a renderer
        // is a really powerful method of having control over symbology
        // client-side, especially if you don't have control over the service.
        // --------------------------------------------------------------------
        var uniqueValueRenderer = new UniqueValueRenderer(createSymbol("#d9d9d9"), function (graphic){
          var maxField = "Other";
          var max = 0;

          array.forEach(featureLayerOptions.outFields, function (field){
            if (graphic.attributes[field] > max) {
              maxField = field;
              max = graphic.attributes[field];
            }
          });

          return maxField;
        });

        // --------------------------------------------------------------------
        // Helper function for creating symbols for the UniqueValueRenderer
        // --------------------------------------------------------------------
        function createSymbol(color){
          return new SimpleFillSymbol()
            .setColor(new Color(color))
            .setOutline(
            new SimpleLineSymbol().setColor(new Color("#999999")).setWidth(1)
          );
        }

        uniqueValueRenderer.addValue({ value: "M217_07", symbol: createSymbol("#fd7f6f"), label: "Vegetables" });
        uniqueValueRenderer.addValue({ value: "M188_07", symbol: createSymbol("#b2e061"), label: "Cotton" });
        uniqueValueRenderer.addValue({ value: "M172_07", symbol: createSymbol("#bd7ebe"), label: "Wheat" });
        uniqueValueRenderer.addValue({ value: "M193_07", symbol: createSymbol("#7eb0d5"), label: "Soybeans" });
        uniqueValueRenderer.addValue({ value: "M163_07", symbol: createSymbol("#ffb55a"), label: "Corn" });

        // --------------------------------------------------------------------
        // Use the average data values to control opacity
        // Field:       M086_07
        // Description: The acres of total cropland as a percentage of land area in acres.
        //
        // Standard Deviation:    28.9616022263796
        // Average:               39.457298802092
        // Standard Deviation -1: 10.495696576
        // Standard Deviation +1: 68.418901028
        //
        // For more information about statistics: see the outStatistics
        // parameter in the ArcGIS REST API Help.
        // --------------------------------------------------------------------
        uniqueValueRenderer.setOpacityInfo({
          field: "M086_07",
          stops: [
            { value: 10, opacity: 0   }, // -1 stddev,     transparent
            { value: 39, opacity: 0.5 }, // average value, 50% transparent
            { value: 68, opacity: 1   }  // +1 stddev,     completely opaque
          ]
        });

        featureLayer.setRenderer(uniqueValueRenderer);
        map.addLayer(featureLayer);

        var legend = new Legend({
          map: map,
          layerInfos: [
            {
              layer: featureLayer,
              title: "Acres harvested by type"
            }
          ]
        }, "legend");

        legend.startup();
      });
    </script>
  </head>

  <body>
    <div id="map"></div>
    <div id="info">
      <div id="legend"></div>
    </div>
  </body>
</html>

主要作物不透明度
html,body,#map{
身高:100%;
保证金:0;
背景色:#000000;
}
E.分配{
背景:无;
颜色:#ffffff;
}
#信息{
宽度:14.0625em;
背景色:#000;
颜色:#fff;
位置:绝对位置;
左:0;
底部:0;
左侧填充:10px;
填充顶部:10px;
字体系列:Arial,“Helvetica Neue”,Helvetica,无衬线;
边框顶部:2个实心#ffffff;
右边框:2px实心#ffffff;
边框右上角半径:20px;
}
var映射;
要求([
“dojo/_基/阵列”,
“dojo/number”,
“esri/Color”、“esri/dijit/Legend”,
“esri/geometry/Extent”、“esri/InfoTemplate”、“esri/layers/FeatureLayer”,
“esri/map”、“esri/Renders/UniqueValueRenderer”,
“esri/symbols/SimpleFillSymbol”、“esri/symbols/SimpleLineSymbol”、“dojo/domReady!”
],函数(数组、数字、颜色、图例、范围、信息模板、FeatureLayer、地图、UniqueValueRenderer、,
SimpleFillSymbol,SimpleLineSymbol){
地图=新地图(“地图”{
明斯克:18489297,
最大刻度:1245436,
范围:新范围({
“xmax”:-7218373,
“xmin”:-15045524,
“ymax”:7571201,
“ymin”:2160682,
“空间参考”:{“wkid”:102100}
})
});
// --------------------------------------------------------------------
//自定义函数,用于设置裁剪值的数字格式
//例如,126744变为126744
// --------------------------------------------------------------------
formatNumber=函数(值、键、数据){
返回number.format(值,{places:0,locale:“en-us”});
};
var FeatureLayerOperations={
模式:FeatureLayer.mode\u AUTO,
外场:[“M163_07”、“M172_07”、“M188_07”、“M193_07”、“M217_07”、“县”、“州”、“地区”、“M086_07”],
infoTemplate:新的infoTemplate(${COUNTY},${STATE}),
“谷物用玉米:${M163_07:formatNumber}
谷物用全麦:${M172_07:formatNumber}
陆地棉:${M188_07:formatNumber}
大豆:${M193_07:formatNumber}
蔬菜:${M217_07:formatNumber}”) }; var featureLayer=new featureLayer(“//services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/USA\u country\u Crops\u 2007/FeatureServer/0”, 特征(分层); // -------------------------------------------------------------------- //用于计算具有最大值的裁剪的自定义函数 //在特定计数中。使用带有呈现器的自定义函数 //是控制符号学的一种非常有效的方法 //客户端,尤其是当您无法控制服务时。 // -------------------------------------------------------------------- var uniqueValueRenderer=新的uniqueValueRenderer(createSymbol(“#d9d9d9”),函数(图形){ var maxField=“其他”; var max=0; array.forEach(功能层配置、外场、功能(场){ if(图形属性[字段]>最大值){ maxField=field; max=图形属性[字段]; } }); 返回maxField; }); // -------------------------------------------------------------------- //用于为UniqueValueRenderer创建符号的辅助函数 // -------------------------------------------------------------------- 函数createSymbol(颜色){ 返回新的SimpleFillSymbol() .setColor(新颜色(颜色)) .setOutline( 新SimpleLineSymbol().setColor(新颜色(“#999999”)).setWidth(1) ); } addValue({value:“M217_07”,符号:createSymbol(#fd7f6f),标签:“蔬菜”}); addValue({value:“M188_07”,符号:createSymbol(#b2e061),标签:“Cotton”}); addValue({value:“M172_07”,符号:createSymbol(“#bd7ebe”),标签:“小麦”}); addValue({value:“M193_07”,符号:createSymbol(#7eb0d5),标签:“Soybeans”}); addValue({value:“M163_07”,符号:createSymbol(#ffb55a),标签:“Corn”}); // -------------------------------------------------------------------- //使用平均数据值控制不透明度 //字段:M086_07 //说明:总耕地的英亩数占土地面积的百分比(单位:英亩)。 // //标准偏差:28.9616022263796 //平均数:39.457298802092 //标准偏差-1:10.495696576 //标准偏差+1:68.418901028 // //有关统计信息的更多信息:请参见outStatistics //ArcGIS REST API帮助中的参数。 // -------------------------------------------------------------------- uniqueValueRenderer.setOpacityInfo({ 字段:“M086_07”, 停止:[ {值:10,不透明度:0},//-1 stddev,透明 {值:39,不透明度:0.5},//平均值,50%透明 {值:68,不透明度:1}/+1 stddev,完全不透明 ] }); setRenderer(uniqueValueRenderer); map.addLayer(featureLayer); 变量图例=新图例({ 地图:地图,
#legend {visibility:hidden;}
require(["dojo/dom", "dojo/dom-style", "dojo/on"], function(dom, domStyle, on){
   dom.byId("legend_button").on("click", function(data) {
     domStyle.set(dom.byId("legend"), "visibility", "visible");
   });
});