zoukankan      html  css  js  c++  java
  • leaflet 整合 esri

    此 demo 通过 proj4js 将 leaflet 与 esri 整合起来,同时添加了 ClusteredFeatureLayer 的支持。

    下载

    <html>
    <head>
      <meta charset=utf-8 />
      <title>Esri Leaflet Quickstart</title>
      <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
    
        <link rel="stylesheet" href="leaflet/leaflet.css" />
        <link rel="stylesheet" type="text/css" href="leaflet/MarkerCluster.css" />
        <script type="text/javascript" src="leaflet/leaflet-src.js"></script>
        <script type="text/javascript" src="leaflet/proj4.js"></script>
        <script type="text/javascript" src="leaflet/proj4leaflet.js"></script>
        <script type="text/javascript" src="leaflet/esri-leaflet-src.js"></script>
        <script type="text/javascript" src="leaflet/leaflet.markercluster-src.js"></script>
        <script type="text/javascript" src="leaflet/leaflet.esri.ClusteredFeatureLayer.js"></script>
    
      <style>
        body { margin:0; padding:0; }
        #map { position: absolute; top:0; bottom:0; right:0; left:0; }
      </style>
    </head>
    <body>
    
    <div id="map"></div>
    
    <script>
        var centerPoint = new L.LatLng(39.40, 117.30);
        var SERVICE_PATH = "http://192.168.1.111/ArcGIS/"
        // crs 的设置参考上一篇文章
        var crs = new L.Proj.CRS("EPSG:2384", "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs",
        {
            origin: [0, 0],   
            resolutions: [
              264.583862501058,
              132.291931250529,
              66.1459656252646,
              33.0729828126323,
              16.9333672000677,
              8.46668360003387,
              4.23334180001693,
              2.11667090000847,
              1.05833545000423,
              0.529167725002117,
              0.264583862501058,
              0.132291931250529
            ] 
        });
        var mapOptions = {
            center: centerPoint,
            zoom: 0,
            crs: crs,
            attributionControl: true,
        };
        var map = L.map('map', mapOptions);
        var tileLayer = L.esri.tiledMapLayer({
          url:SERVICE_PATH + '/rest/services/[Tile 地图名称]/MapServer',
          maxZoom: 11,
          minZoom: 0,
          continuousWorld: true
        });
        map.addLayer(tileLayer);
        var featureMap = { 
          "SDE LAYER": L.esri.clusteredFeatureLayer({
            url: SERVICE_PATH + '/rest/services/[SDE 或 Feature 地图名称]/MapServer/1',
            opacity: 0.5,
            useCors: false
          })
        };
        L.control.layers(null, featureMap).addTo(map);
    </script>
    
    </body>
    </html>

    上一篇文章中使用了 leaflet 自身的 TileLayer 直接加载瓦片,此 demo 中通过 esri-leaflet 中的 L.esri.tiledMapLayer 加载更加方便,但是需要注意的是,以此方式必须设置 maxZoom 及 minZoom。

    centerPoint 必须使用经纬度坐标,80坐标不可以呦。

    使用 demo,必须替换 crs 中的投影字符串、 origin,以及地图服务的网址。

    esri-leaflet 和 arcgis javascript api 的定位是不同的,更多的是用来进行数据可视化,所以对于SDE数据的维护还是使用 arcgis jsapi 更方便一些。

  • 相关阅读:
    从实验室走向世界:HSP90抑制剂,一种新的癌症药物
    RabbitMQ整合Spring Booot【消费者应答模式】
    RabbitMQ整合Spring Booot【点对点模式】
    Mac删除自带的abc输入法
    Docker搭建Kafka
    IK分词器
    Docker搭建ES集群
    Logstash配置同步mysql到es配置
    ELK分布式日志收集搭建和使用
    Docker安装ES和Kibana
  • 原文地址:https://www.cnblogs.com/slobber/p/leaflet_with_arcgis.html
Copyright © 2011-2022 走看看