• 【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/
    博客版权: 本文以学习、研究和分享为主,欢迎转载和各类爬虫,但必须在文章页面明显位置给出原文链接。 如果文中有不妥或者错误的地方还望高手的您指出,以免误人子弟。如果您有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
  • 相关阅读:
    shell函数
    sed命令
    交互式输入与for语句
    day01_云计算概述及kvm介绍
    grep与正则表达式
    shell的编程原理
    shell的文本处理工具
    shell的基础入门
    深入理解JavaScript中 fn() 和 return fn() 的区别
    一篇笔记带你快速掌握面向对象的Javascript(纯手打)
  • 原文地址:https://www.cnblogs.com/defineconst/p/15024060.html
Copyright © 2020-2023  润新知