zoukankan      html  css  js  c++  java
  • shapefile on leaflet,在leaflet上加载shapefile文件

    一,插件

    leaflet的官网上,plugins很多。但是这个插件:Leaflet.Shapefile 不太管用,https://github.com/calvinmetcalf/leaflet.shapefile

    可以启动的方法用了作者的另外一个插件:https://github.com/calvinmetcalf/shapefile-js,不是直接用L.Shapefile这个拓展结构,

    需要引入shapefile-js的插件

    下载地址:https://github.com/calvinmetcalf/leaflet.shapefile/blob/gh-pages/shp.js

    var geo = L.geoJson({features:[]},{onEachFeature:function popUp(f,l){
                var out = [];
                if (f.properties){
                    for(var key in f.properties){
                        out.push(key+": "+f.properties[key]);
                        } 
                    l.bindPopup(out.join("<br />"));
                }
                }});//加载zip打包的shapefile类型文件
     var base=''
     shp(base).then(function(data){
            geo.addData(data);
              });

    ,由于解析shp文件的异步方法,如下:

    shp().then()

    用到了AJAX,所以需要加载本地文件,便触发了同源约束,需要开启VScode的live server。

    二,天地图上加载shapefile

    //请求天地图服务
    let tmaps=L.layerGroup([  
                    L.tileLayer(),
                    L.tileLayer()
                    ])
    //解析shapefile文件
    var geo = L.geoJson({features:[]},{onEachFeature:function popUp(f,l){
           var out = [];
           if (f.properties){
           for(var key in f.properties){
                 out.push(key+": "+f.properties[key]);
                     } 
                 l.bindPopup(out.join("<br />"));
                }
                }});
    //需要shapefile文件的zip压缩包
    var base='地址.zip'
    shp(base).then(function(data){
            geo.addData(data);
             });
    //把两种图加载到地图容器
    var map=L.map('map',{
          crs:L.CRS.EPSG4326,
          center: [], 
          zoom:4, 
          zoomControl: false, 
          attributionControl: false, 
          closePopupOnClick: false,
          layers:[tmaps,geo]
          })

    天地图的投影方式是EPSG4326,leaflet的默认投影为EPSG3857,需要把对应的shapefile也投影成与匹配的投影,在arcgis里选择网络墨卡托

    Web Mercator与EPSG4326的关系在这里:https://www.cnblogs.com/E7868A/p/11460865.html

  • 相关阅读:
    jqueryUI弹出框问题
    spring data jpa分页
    解决eclipse编辑js和html卡的问题
    web.xml添加编码过滤器
    Apache SolrCloud安装
    搭建zookeeper集群
    html页面读取PDF小案例
    .NET 使用Process调用7_zip解压文件
    .NET 中三种正确的单例写法
    Git 笔记
  • 原文地址:https://www.cnblogs.com/guoguocode/p/13393166.html
Copyright © 2011-2022 走看看