• ArcGIS API for JS的一般编码习惯


    1、引用claro.css和esri.css

    <link rel="stylesheet" href="http://js.arcgis.com/3.10/js/dojo/dijit/themes/claro/claro.css">
      <link rel="stylesheet" href="http://js.arcgis.com/3.10/js/esri/css/esri.css">
    

    2、页面布局

    <body class="claro">
      <div data-dojo-type="dijit.layout.BorderContainer" 
           data-dojo-props="gutters:'true', design:'sidebar'" 
           style="100%;height:100%;">
    
        <div id="map" 
             data-dojo-type="dijit.layout.ContentPane" 
             data-dojo-props="region:'center'">
        </div>
    
        <div id="leftPane" 
             data-dojo-type="dijit.layout.ContentPane" 
             data-dojo-props="region:'left'">
    
          <div class="details">Pick a tool and draw on the map. The drawn graphic will be buffered based on the specified parameters.</div>
          <button data-dojo-type="dijit.form.Button" onclick="app.tb.activate(esri.toolbars.Draw.LINE);app.map.hideZoomSlider();">Line</button>
          <button data-dojo-type="dijit.form.Button" onclick="app.tb.activate(esri.toolbars.Draw.POLYLINE);app.map.hideZoomSlider();">Polyline</button>
          <button data-dojo-type="dijit.form.Button" onclick="app.tb.activate(esri.toolbars.Draw.FREEHAND_POLYLINE);app.map.hideZoomSlider();">Freehand Polyline</button>
          <br />
          <button data-dojo-type="dijit.form.Button" onclick="app.tb.activate(esri.toolbars.Draw.POLYGON);app.map.hideZoomSlider();">Polygon</button>
          <button data-dojo-type="dijit.form.Button" onclick="app.tb.activate(esri.toolbars.Draw.FREEHAND_POLYGON);app.map.hideZoomSlider();">Freehand Polygon</button>
    
          <br /><hr />
          <div><b>Buffer Parameters</b></div>
          Spatial Reference WKID: <input type="text" id="bufferSpatialReference" size="5" value="32612" /><br />
          Distance: <input type="text" id="distance" size="5" value="25" />
          <select id="unit" style="100px;">
            <option value="UNIT_STATUTE_MILE">Miles</option>
            <option value="UNIT_FOOT">Feet</option>
            <option value="UNIT_KILOMETER">Kilometers</option>
            <option value="UNIT_METER">Meters</option>
            <option value="UNIT_NAUTICAL_MILE">Nautical Miles</option>
            <option value="UNIT_US_NAUTICAL_MILE">US Nautical Miles</option>
            <option value="UNIT_DEGREE">Degrees</option>
          </select><br />
          <button data-dojo-type="dijit.form.Button" type="button" onclick="app.map.graphics.clear();">Clear Graphics</button>
        </div>
      </div>
      
    </body>
    

    3、页面样式

      <style>
         html, body {
          height: 100%;
           100%;
          margin: 0; 
          padding: 0;
          overflow:hidden;
        }
        #leftPane{
          color:#000;
          250px;
          padding-bottom:15px;
        }
        #map{
          padding:0;
        }
        .details{
          font-size:14px;
          font-weight:600;
          padding-bottom:20px;
        }
      </style>
    

    4、页面加载响应处理

      <script src="http://js.arcgis.com/3.10/"></script>
      <script>
          require(["dojo/dom",
                  "dojo/dom-attr",
                  "dojo/_base/array",
                  "esri/Color",
                  "dojo/parser",
    
                  "esri/config",
                  "esri/map",
                  "esri/graphic",
    
                  "esri/tasks/GeometryService",
                  "esri/tasks/BufferParameters",
    
                  "esri/toolbars/draw",
    
                  "esri/symbols/SimpleMarkerSymbol",
                  "esri/symbols/SimpleLineSymbol",
                  "esri/symbols/SimpleFillSymbol",
    
                  "dijit/layout/BorderContainer",
                  "dijit/layout/ContentPane"],
            function (dom, domAttr, array, Color, parser, esriConfig, Map, Graphic, GeometryService, BufferParameters, Draw, SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol) {
                var map, gsvc, tb;
                parser.parse();
                map = new Map("map", {
                    basemap: "streets",
                    center: [-111.5, 39.541],
                    zoom: 7
                });
                map.on("load", initToolbar);
    
                gsvc = new GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
    
                esriConfig.defaults.io.proxyUrl = "/proxy";
                esriConfig.defaults.io.alwaysUseProxy = false;
    
                //该方法初始化App类
                function initToolbar(evtObj) {
                    app.tb = new Draw(evtObj.map);
                    app.tb.on("draw-end", doBuffer);
                }
    
                function doBuffer(evtObj) {
                    var geometry = evtObj.geometry,
                    map = app.map,
                    gsvc = app.gsvc;
                    switch (geometry.type) {
                        case "point":
                            var symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_SQUARE, 10, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 1), new Color([0, 255, 0, 0.25]));
                            break;
                        case "polyline":
                            var symbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new Color([255, 0, 0]), 1);
                            break;
                        case "polygon":
                            var symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_NONE, new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT, new Color([255, 0, 0]), 2), new Color([255, 255, 0, 0.25]));
                            break;
                    }
    
                    var graphic = new Graphic(geometry, symbol);
                    map.graphics.add(graphic);
    
                    //setup the buffer parameters
                    var params = new BufferParameters();
                    params.distances = [dom.byId("distance").value];
                    params.bufferSpatialReference = new esri.SpatialReference({ wkid: dom.byId("bufferSpatialReference").value });
                    params.outSpatialReference = map.spatialReference;
                    params.unit = GeometryService[dom.byId("unit").value];
    
                    if (geometry.type === "polygon") {
                        //if geometry is a polygon then simplify polygon.  This will make the user drawn polygon topologically correct.
                        gsvc.simplify([geometry], function (geometries) {
                            params.geometries = geometries;
                            gsvc.buffer(params, showBuffer);
                        });
                    } else {
                        params.geometries = [geometry];
                        gsvc.buffer(params, showBuffer);
                    }
                }
    
                function showBuffer(bufferedGeometries) {
                    var symbol = new SimpleFillSymbol(
                      SimpleFillSymbol.STYLE_SOLID,
                      new SimpleLineSymbol(
                        SimpleLineSymbol.STYLE_SOLID,
                        new Color([255, 0, 0, 0.65]), 2
                      ),
                      new Color([255, 0, 0, 0.35])
                    );
    
                    array.forEach(bufferedGeometries, function (geometry) {
                        var graphic = new Graphic(geometry, symbol);
                        app.map.graphics.add(graphic);
                    });
                    app.tb.deactivate();
                    app.map.showZoomSlider();
                }
    
                //这相当于C#里面的类的概念,用于存储临时使用的值
                app = {
                    map: map,
                    tb: tb,
                    gsvc: gsvc
                };
            });
      </script>
    

      

  • 相关阅读:
    Spark安装
    JavaScript encodeURIComponent()
    Kafka分布式:ZooKeeper扩展
    Kafka特性
    Kafka消息topic分区
    Kafka消息文件存储
    哈希表
    sizeof
    pytest_demo_实战2_fixture应用
    pytest_demo_实战1
  • 原文地址:https://www.cnblogs.com/rockman/p/3920688.html
Copyright © 2020-2023  润新知