zoukankan      html  css  js  c++  java
  • 第一个自定义开发的Arcgis地图

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <!--The viewport meta tag is used to improve the presentation and behavior of the samples
          on iOS devices-->
        <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
        <title>Feature Layer - display results as an InfoWindow onHover</title>
    
        <link rel="stylesheet" type="text/css" href="./arcgis_js_api/library/3.12/3.12/dijit/themes/tundra/tundra.css" />
        <link rel="stylesheet" type="text/css" href="./arcgis_js_api/library/3.12/3.12/esri/css/esri.css" />
        <style>
            html, body, #mapDiv {
                padding: 0;
                margin: 0;
                height: 100%;
            }
    
            #mapDiv {
                position: relative;
            }
    
            #info {
                background: #fff;
                box-shadow: 0 0 5px #888;
                left: 1em;
                padding: 0.5em;
                position: absolute;
                bottom: 1em;
                z-index: 40;
            }
        </style>
    
        <script src="./arcgis_js_api/library/3.12/3.12/init.js"></script>
        <script src="./arcgis_js_api/library/3.12/3.12/js/dojo/dojo/dojo.js"></script>
        <script>
            var map, dialog;
            // legacy
            dojo.require("esri.map");
            dojo.require("esri.layers.FeatureLayer");
            dojo.require("esri.symbols.SimpleFillSymbol");
            dojo.require("esri.symbols.SimpleLineSymbol");
            dojo.require("esri.renderers.SimpleRenderer");
            dojo.require("esri.graphic");
            dojo.require("esri.lang");
            dojo.require("esri.Color");
            dojo.require("dojo.number");
            dojo.require("dojo.dom-style");
            dojo.require("dijit.TooltipDialog");
            dojo.require("dijit.popup");
            dojo.require("dojo.domReady");
            
            function init() {
                map = new esri.Map("mapDiv", {
                    center:[41486975.02495959, 5053546.601156929], 
                    zoom: 8,
                    slider: true
                });
    
                //添加一个图层
                var censusMapLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://192.168.135.250:6080/arcgis/rest/services/CZDJ/CZDJ_ZD/MapServer");
                map.addLayer(censusMapLayer);
                                
                var baiChengCity = new esri.layers.FeatureLayer("http://192.168.135.250:6080/arcgis/rest/services/CZDJ/CZDJ_ZD/MapServer/2", {
                    mode: esri.layers.FeatureLayer.MODE_SNAPSHOT, // be careful with the namespace using between AMD with Legacy
                    outFields: ["QLR", "TDZL", "DJH", "YSDM", "ZDID"]
                });
       
    
                // set define zone
                // baiChengCity.setDefinitionExpression("YSDM =  '2006010100'");
    
                var symbol = new esri.symbol.SimpleFillSymbol(
                    esri.symbol.SimpleFillSymbol.STYLE_SOLID,
                  new esri.symbol.SimpleLineSymbol(
                    esri.symbol.SimpleLineSymbol.STYLE_SOLID,
                    new esri.Color([255, 255, 255, 0.35]),
                    1
                  ),
                  new esri.Color([125, 125, 125, 0.35])
                );
    
                baiChengCity.setRenderer(new esri.renderer.SimpleRenderer(symbol));
                map.addLayer(baiChengCity);
    
                // info window
                map.infoWindow.resize(245, 125);
    
                dialog = new dijit.TooltipDialog({
                    id: "tooltipDialog",
                    style: "position: absolute;  250px; font: normal normal normal 10pt Helvetica;z-index:100"
                });
                dialog.startup();
    
                var highlightSymbol = new esri.symbol.SimpleFillSymbol(
                  esri.symbol.SimpleFillSymbol.STYLE_SOLID,
                  new esri.symbol.SimpleLineSymbol(
                    esri.symbol.SimpleLineSymbol.STYLE_SOLID,
                    new esri.Color([255, 0, 0]), 3
                  ),
                  new esri.Color([125, 125, 125, 0.35])
                );
    
                //close the dialog when the mouse leaves the highlight graphic
                map.on("load", function () {
                    map.graphics.enableMouseEvents();
                    map.graphics.on("mouse-out", closeDialog);
    
                });
    
                //listen for when the onMouseOver event fires on the countiesGraphicsLayer
                //when fired, create a new graphic with the geometry from the event.graphic and add it to the maps graphics layer
                baiChengCity.on("mouse-over", function (evt) {
                    var t = "<b>${QLR}</b><hr><b>Land Class: </b>${TDZL}<br>"
                      + "<b>Land Registration Number: </b>${DJH}<br>"
                      + "<b>YSDM: </b>${YSDM}<br>"
                      + "<b>Parcel ID: </b>${ZDID:NumberFormat}";
                    
                    var content = esri.lang.substitute(evt.graphic.attributes, t);
                    var highlightGraphic = new esri.graphic(evt.graphic.geometry, highlightSymbol);
                    map.graphics.add(highlightGraphic);
    
                    dialog.setContent(content);
    
                    dojo['dom-style'].set(dialog.domNode, "opacity", 0.85);
                    dijit.popup.open({
                        popup: dialog,
                        x: evt.pageX,
                        y: evt.pageY
                    });
                });
    
                    
    
    
    
    
                //显示坐标
                dojo.connect(map, "onLoad", function () {
                    dojo.connect(map, "onMouseMove", showCoordinates);
                    dojo.connect(map, "onMouseDrag", showCoordinates);
                });
          
                  
            }
     
    
            function closeDialog()
            {
                map.graphics.clear();
                dijit.popup.close(dialog);
            }
             
            function showCoordinates(evt) {
                var mp = evt.mapPoint;
                dojo.byId("infoXY").innerHTML = "X: " + mp.x + "<br/>" + "Y: " + mp.y;
            }
            dojo.addOnLoad(init);
    
    
    
            /* AMD
            require([
              "esri/map", "esri/layers/FeatureLayer",
              "esri/symbols/SimpleFillSymbol", "esri/symbols/SimpleLineSymbol",
              "esri/renderers/SimpleRenderer", "esri/graphic", "esri/lang",
              "esri/Color", "dojo/number", "dojo/dom-style",
              "dijit/TooltipDialog", "dijit/popup", "dojo/domReady!"
            ], function (
              Map, FeatureLayer,
              SimpleFillSymbol, SimpleLineSymbol,
              SimpleRenderer, Graphic, esriLang,
              Color, number, domStyle,
              TooltipDialog, dijitPopup
            ) {
                map = new Map("mapDiv", {
                    basemap: "streets",
                    center: [-80.94, 33.646],
                    zoom: 8,
                    slider: false
                });
    
                var southCarolinaCounties = new FeatureLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3", {
                    mode: FeatureLayer.MODE_SNAPSHOT,
                    outFields: ["NAME", "POP2000", "POP2007", "POP00_SQMI", "POP07_SQMI"]
                });
                southCarolinaCounties.setDefinitionExpression("STATE_NAME = 'South Carolina'");
    
                var symbol = new SimpleFillSymbol(
                  SimpleFillSymbol.STYLE_SOLID,
                  new SimpleLineSymbol(
                    SimpleLineSymbol.STYLE_SOLID,
                    new Color([255, 255, 255, 0.35]),
                    1
                  ),
                  new Color([125, 125, 125, 0.35])
                );
                southCarolinaCounties.setRenderer(new SimpleRenderer(symbol));
                map.addLayer(southCarolinaCounties);
    
                map.infoWindow.resize(245, 125);
    
                dialog = new TooltipDialog({
                    id: "tooltipDialog",
                    style: "position: absolute;  250px; font: normal normal normal 10pt Helvetica;z-index:100"
                });
                dialog.startup();
    
                var highlightSymbol = new SimpleFillSymbol(
                  SimpleFillSymbol.STYLE_SOLID,
                  new SimpleLineSymbol(
                    SimpleLineSymbol.STYLE_SOLID,
                    new Color([255, 0, 0]), 3
                  ),
                  new Color([125, 125, 125, 0.35])
                );
    
                //close the dialog when the mouse leaves the highlight graphic
                map.on("load", function () {
                    map.graphics.enableMouseEvents();
                    map.graphics.on("mouse-out", closeDialog);
    
                });
    
                //listen for when the onMouseOver event fires on the countiesGraphicsLayer
                //when fired, create a new graphic with the geometry from the event.graphic and add it to the maps graphics layer
                southCarolinaCounties.on("mouse-over", function (evt) {
                    var t = "<b>${NAME}</b><hr><b>2000 Population: </b>${POP2000:NumberFormat}<br>"
                      + "<b>2000 Population per Sq. Mi.: </b>${POP00_SQMI:NumberFormat}<br>"
                      + "<b>2007 Population: </b>${POP2007:NumberFormat}<br>"
                      + "<b>2007 Population per Sq. Mi.: </b>${POP07_SQMI:NumberFormat}";
    
                    var content = esriLang.substitute(evt.graphic.attributes, t);
                    var highlightGraphic = new Graphic(evt.graphic.geometry, highlightSymbol);
                    map.graphics.add(highlightGraphic);
    
                    dialog.setContent(content);
    
                    domStyle.set(dialog.domNode, "opacity", 0.85);
                    dijitPopup.open({
                        popup: dialog,
                        x: evt.pageX,
                        y: evt.pageY
                    });
                });
    
                function closeDialog() {
                    map.graphics.clear();
                    dijitPopup.close(dialog);
                }
    
            });*/
        </script>
    </head>
    <body class="tundra">
        <div id="mapDiv">
          
          <div id="info">
                Hover over a county in BaiCheng City to get more information.
           </div>
           <div id="infoXY" style="position:absolute; right:25px; bottom:5px; color:#000; z-index:40;"></div>
             
            
        </div>
    </body>
    </html>
    

    最近研究了一段时间Arcgis Javascript的 Web 前段开发, 虽然资料很多,但是还是感觉困难重重。

    终于今天努力照着示例做出了一个像模像样的地图,虽然功能很简单,但是碰到了本地化js和Legacy的dojo使用方法很多细节问题,需要在以后工作中特别注意。

    以后的路还很长,,,, To be continue。。。

  • 相关阅读:
    刷题篇--热题HOT 71-80
    刷题篇--热题HOT 61-70
    双飞翼布局介绍-始于淘宝UED
    css布局——百度前端技术学院
    CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解
    CSS之BFC详解
    深入理解BFC和Margin Collapse
    CSS 布局_如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?
    3列、2列自适应布局,中部内容优先显示3列布局等方法
    三列布局,中间自适应
  • 原文地址:https://www.cnblogs.com/liflying/p/4271108.html
Copyright © 2011-2022 走看看