zoukankan      html  css  js  c++  java
  • 【Mapbox】建筑矢量切片拾取、高亮、信息弹窗

    1、数据源加载

                    map.addSource('building', {
                        type: 'vector',
                        tiles: ['http://192.168.182.1:6767/{z}/{x}/{y}.pbf']
                    })

    2、建筑图层加载

    map.addLayer({
                        "id": "guanzhou",
                        "type": "fill-extrusion",
                        "source": "building", 
                        "source-layer": "广州",
                        'layout': {},
                        'paint': {
     
    
                            'fill-extrusion-color': [
                                "interpolate",
                                ["exponential", 0.99],
                                ["get", "Floor"],
                                0,
                                "#FFF6B7",
                                100,
                                "#F6416C"
                            ],
                            'fill-extrusion-height': [
                                "interpolate", ["linear"],
                                ["zoom"],
                                15, 0,
                                15.05, ["get", "Floor"]
                            ],
                            'fill-extrusion-base': 0,
                            'fill-extrusion-opacity': 0.6
                        }
                    });

    3、拾取图层加载

                    map.addLayer({
                        'id': 'layerHighlight',
                        'type': 'fill-extrusion',
                        'source': "building",
                        "source-layer": "广州",
                        'paint': {
                            'fill-extrusion-color': '#088', 
                            'fill-extrusion-height': [
                                "interpolate", ["linear"],
                                ["zoom"],
                                15, 0,
                                15.05, ["get", "Floor"]
                            ],
                            'fill-extrusion-base': 0,
                            'fill-extrusion-opacity': 0.6
                        },
                        "filter": ["in", "Id", ""]
                    });

    4、建筑图层点击

                map.on('click', 'guanzhou', function(e) {
                    var feature = e.features[0];
                    map.setFilter('layerHighlight', ['in', 'Id', feature.properties.Id]);
                    var popup = new mapboxgl.Popup({
                        closeButton: true,
                        closeOnClick: true,
                    });
                    popup.setLngLat(feature.geometry.coordinates[0][0])
                        .setHTML('<strong> Id: </strong>' + feature.properties.Id +
                            '<p> <strong> Floor: </strong>' + feature.properties.Floor + '</p>')
                        .addTo(map);
                });

    5、效果显示

     6、矢量切片描述文件

    source:mapbox中的source的Id,此处为building

    source-layer:图层ID

    Id、Floor:为原数据的字段

    guanzhou:建筑切片图层Id

    layerHighlight:拾取高亮显示图层Id

    博客地址: http://www.cnblogs.com/defineconst/
    博客版权: 本文以学习、研究和分享为主,欢迎转载和各类爬虫,但必须在文章页面明显位置给出原文链接。 如果文中有不妥或者错误的地方还望高手的您指出,以免误人子弟。如果您有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
  • 相关阅读:
    字符串通配
    最短排序
    最长回文子串
    添加回文串
    找零钱
    最优编辑
    01背包
    PHP做分页查询(查询结果也显示为分页)
    PHP 练习3:租房子
    Html5学习3(拖放、Video(视频)、Input类型(color、datetime、email、month 、number 、range 、search、Tel、time、url、week ))
  • 原文地址:https://www.cnblogs.com/defineconst/p/15024060.html
Copyright © 2011-2022 走看看