ARCGIS 不需要底图的要素图层展示

       一般我们在前端展示要素图层时,都需要切片地图作为底图,那么能不能只展示要素图层,无需底图呢。方法是通过query查询,获得要素图层的空间属性,然后通过GraphicsLayer绘制出来。如下图:

        代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>无需底图的要素图层展示</title>
  <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.25/dijit/themes/claro/claro.css">
  <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.25/esri/css/esri.css">
  <style>
    body,
    html {
      margin: 0;
      padding: 0;
      width: 100%;
      height: 100%;
      font-family: Arial;
    }

    #map {
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      border: 0px dashed black;
      background-color: rgb(0, 38, 48);
    }
  </style>
</head>
<body> 
<div>
</div> 
<div id="map">
</div>
</body>
<script src="http://localhost/arcgis_js_api/library/3.25/init.js"></script>
<script type="text/javascript">
  var map;
  require([
    "esri/map",
    "esri/layers/ArcGISDynamicMapServiceLayer",
    "esri/layers/ArcGISTiledMapServiceLayer",
    "esri/layers/FeatureLayer",
    "esri/InfoTemplate",
    'esri/tasks/query',
    'esri/tasks/QueryTask',
    'esri/layers/GraphicsLayer',
    'esri/graphic',
    'esri/geometry/Point',
    'esri/symbols/SimpleFillSymbol',
    'esri/symbols/SimpleLineSymbol',
    'esri/symbols/TextSymbol',
    'esri/Color',
    "esri/geometry/Extent",
    "dojo/domReady!"
  ], function(
    Map,
    ArcGISDynamicMapServiceLayer,
    ArcGISTiledMapServiceLayer,
    FeatureLayer,
    InfoTemplate, Query, QueryTask, GraphicsLayer, Graphic, Point,
    SimpleFillSymbol, SimpleLineSymbol, TextSymbol, Color,
    Extent
  ) {

    //初始地图显示范围
    var mapExtent = new Extent({
      xmax: 113.799760210539,
      xmin: 106.57095767482662,
      ymax: 20.459116202966324,
      ymin: 18.27952992162579,
      spatialReference: {
        wkid: 4326
      }
    })
  
    map = new Map("map", {
      extent: mapExtent,
      sliderStyle: "small",
      logo: false,
    });

    map.on('load', function () {
       map.hideZoomSlider()
       map.hidePanArrows()
    })

    //定义绘制图层
    var featureLayer = new GraphicsLayer()
    map.addLayer(featureLayer)

    //查询
    var query = new Query()
    query.outFields = ['*']
    query.geometryPrecision = 3
    //已发布的市县要素图层
    var url = 'http://localhost:6080/arcgis/rest/services/WLW/CITY_USER/MapServer/0'
    query.where = '1=1'
    query.returnGeometry = true
    var queryTask = new QueryTask(url)
    queryTask.execute(query, function (results) {
      //将查询结果作为参数
      getMap(results)
    })
    

    //线符号
    var outline = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 191, 255]), 1)
    //面符号
    var PolygonSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, outline, new Color([245, 222, 179, 1]))

    //绘制图层和添加标注的方法
    function getMap (results) {
      var f = results.features
      var l = f.length
      for (var i = 0; i < l; i++) {
        var geometry = f[i].geometry
        //将查询到的空间属性信息添加到绘制图层
        var graphic = new Graphic(geometry, PolygonSymbol)
        featureLayer.add(graphic)
        //添加标注
        var text = f[i].attributes.NAME
        var textSymbol = new TextSymbol(text)
        textSymbol.setColor(new Color([255,0,0,0.5]))
        var centerPoint = geometry.getCentroid()
        var graphicText = new Graphic(centerPoint, textSymbol)
        featureLayer.add(graphicText)
      }
    }
  });
</script>
</html>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值