zoukankan      html  css  js  c++  java
  • 关于leaflet.js实现出图,图层叠加,气泡弹窗等

        var map,vectorLayer;
         $(document).ready(function(){
          vectorLayer = L.supermap.tiledMapLayer("http://127.0.0.1:8088/iserver/services/map-zzmap/rest/maps/basemap", {
               maxZoom: 20,
               tileSize: 256,
               zoomOffset: 1
           });
        //  初始化地图
          map = L.map('mapDiv',{
            minZoom:0,
            maxZoom:19,
            crs:L.CRS.EPSG4326,
            layers: [vectorLayer]
      //  设置中心点
         }).setView([34.672852, 113.517609], 10);
    
          //  地图点击事件
        /* map.on('click', function(e) {
             debugger;
             // query("xzqh@xiang",["xzqh:xiang"],"P_CODE=410185","http://127.0.0.1:8088/iserver/services/data-zzmap/rest/data","登封市");
    
         });*/
    
    
        // 注册叠加行政区划事件
        $("#add_xzqh").click(function(){
         
          addXzqh();
    
        });
    
               //注册叠加乡镇事件
          $("#add_xiang").click(function(){
             if(this.checked){ 
               query("xzqh@xiang",["xzqh:xiang"],"P_CODE=410101","http://127.0.0.1:8088/iserver/services/data-zzmap/rest/data","市辖区");
              
             }
             else{
                
             }
          });
          
                     //注册火车站事件
          $("#add_train").click(function(){
             if(this.checked){
               query("poi@train",["poi:train"],"SMID>0","http://127.0.0.1:8088/iserver/services/data-zzmap/rest/data","123");
             }
             else{
                
             }
          });
          
                           //注册火公交站站事件
          $("#add_bus").click(function(){
             if(this.checked){
               query("poi@bus_stop",["poi:bus_stop"],"SMID>0","http://127.0.0.1:8088/iserver/services/data-zzmap/rest/data","123");
             }
             else{
                
             }
          });
          
          //叠加河流
          $("#add_river").click(function(){
            if(this.checked){
              addRiver();
             }
          });
          
         });
         
         // 查询行政区划与乡镇区划
         function query(name,datasetName,filter,url,popup) {
         
            var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
                queryParameter: {
                    name: name,
                    attributeFilter: filter
                },
                datasetNames: datasetName
            });
            L.supermap.featureService(url).getFeaturesBySQL(sqlParam, function (serviceResult) {
            console.log(serviceResult);
                     resultLayer = L.geoJSON(serviceResult.result.features,{
                             style: function (feature) {
                                    return {color: 'blue',weight:1,fillOpacity:0.1};
                                }
                     }).addTo(map).bindPopup(function(layer){
                        return layer.feature.properties.NAME;
                       });
                });
        }
        
             // 查询行政区划与乡镇区划
         function addRiver() {
         
            var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
                queryParameter: {
                    name: "dlg@river_line",
                    attributeFilter: "",
                
                },
                    fromIndex:0,
                    toIndex:300,
                datasetNames: ["dlg:river_line"]
            });
            L.supermap.featureService("http://127.0.0.1:8088/iserver/services/data-zzmap/rest/data").getFeaturesBySQL(sqlParam, function (serviceResult) {
            console.log(serviceResult);
                     resultLayer = L.geoJSON(serviceResult.result.features,{
                             style: function (feature) {
                                    return {color: 'blue',weight:2,fillOpacity:0.5};
                                }
                     }).addTo(map).bindPopup(function(layer){
                        return layer.feature.properties.NAME;
                       });
    
                });
        }
        
        function addXzqh(){
            var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
                queryParameter: {
                    name: "xzqh@xzqh",
                    attributeFilter: "GB!='410100'"
                },
                datasetNames: ["xzqh:xzqh"]
            });
            L.supermap.featureService("127.0.0.1:8088/iserver/services/data-zzmap/rest/data").getFeaturesBySQL(sqlParam, function (serviceResult) {
             
                     resultLayer = L.geoJSON(serviceResult.result.features,{
                             style: function (feature) {
                                    return {color: 'blue',weight:1,fillOpacity:0.1};
                                },
                            onEachFeature:function(feature, layer){
                             var code = feature.properties.GB.split(".")[0];
                              var center = layer.getBounds().getCenter();
                                       var myIcon = L.divIcon({
                                            html: feature.properties.NAME,
                                            className: 'label-div-icon',
                                            iconSize:50
                                        });
                              var marker = L.marker(center, { icon: myIcon });
                                        marker.layerType='xzqh';
                                        marker.addTo(map);
                                 //  图层点击事件
                                  layer.on("click",function(e){
    
                                   console.log(code);
                                   // 加色
                                  queryByParentCode(code,"http://127.0.0.1:8088/iserver/services/data-zzmap/rest/data");
                               })
                            }
                    //  地图绑定气泡弹出文字     
                     }).addTo(map).bindPopup(function(layer){
                        return layer.feature.properties.NAME;
                       });
    
                });
        }
    
             // 根据行政区划编码查询街道办事处
         function queryByParentCode(code,url,popup) {
    
             //  循环遍历获取图层
             map.eachLayer(function (layer) {
                    let leafletId =  layer._leaflet_id;
                    // 保留基本图层移除其他layer图层
                 if(leafletId == 1 ||leafletId == 95 ||leafletId == 97 ||leafletId == 98 ||leafletId == 101 ||leafletId == 102 ||leafletId == 104 ||leafletId == 105 ||leafletId == 107  ||leafletId == 108 ||leafletId == 110 ||leafletId == 111 ||leafletId == 113 ||leafletId == 114 ||leafletId == 116 ||leafletId == 117 ||leafletId == 119 ||leafletId == 120 ||leafletId == 122 ||leafletId == 123 ||leafletId == 125 ||leafletId == 126  ||leafletId == 128 ||leafletId == 129 ||leafletId == 131 ||leafletId == 132 ||leafletId == 134 ||leafletId == 135 ||leafletId ==137 ||leafletId == 138 ||leafletId == 140 ||leafletId == 141 ||leafletId == 143 ||leafletId == 144){
    
                 }
                 else{
                     layer.remove();
                 }
             });
             var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
                queryParameter: {
                    name: "xzqh@xiang",
                    attributeFilter: "P_CODE="+code
                },
                datasetNames: ["xzqh:xiang"]
            });
            debugger;
            L.supermap.featureService(url).getFeaturesBySQL(sqlParam, function (serviceResult) {
            // console.log(serviceResult.result.features);
                     resultLayer = L.geoJSON(serviceResult.result.features,{
                             style: function (feature) {
                                    return {color: 'yellow',weight:1,fillOpacity:0.1};
                                },
                     }).addTo(map).bindPopup(function(layer){
                        return layer.feature.properties.NAME;
                       });
                //  获取到查询条件的面
                var bounds = resultLayer.getBounds();
                //  飞向查询的面中心,面边界即为地图最大边界
                map.flyToBounds(bounds);
                });
        }
     
  • 相关阅读:
    性能测试中的2-5-8原则
    Word2007页面排版
    博客备份专家--豆约翰
    TIOBE[ti'ɔbi]编程语言排行榜
    gif动画录制器LICEcap
    巧用输入法
    gitlab/github如何跳转页面
    Get和Post区别【boss面试集锦】
    带你了解直播流媒体
    直播+音视频行业相关
  • 原文地址:https://www.cnblogs.com/wanlige/p/13345155.html
Copyright © 2011-2022 走看看