mapboxgl + deckgl 入门例子

前言

mapboxgl 提供底图,deckgl 可以提供更为丰富的可视化效果图层,两者的结合可以提供更多的可视化方式。本文仅是简单尝试,后续可以做更多的探索。

效果

在这里插入图片描述

实现代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    
    <script src="https://unpkg.com/deck.gl@^6.2.0/deckgl.min.js"></script>

    <script src='https://api.mapbox.com/mapbox-gl-js/v2.13.0/mapbox-gl.js'></script>
    <link href='https://api.mapbox.com/mapbox-gl-js/v2.13.0/mapbox-gl.css' rel='stylesheet' />

    <script src="https://d3js.org/d3-collection.v1.min.js"></script>
    <script src="https://d3js.org/d3-dispatch.v1.min.js"></script>
    <script src="https://d3js.org/d3-dsv.v1.min.js"></script>
    <script src="https://d3js.org/d3-request.v1.min.js"></script>

</head>

<body>
    <div id="map" style="position: absolute;height: 100%;width: 100%;"></div>

    <script>

        mapboxgl.accessToken = "token";
        const map = new mapboxgl.Map({
            container: 'map', // container ID
            style: 'mapbox://styles/mapbox/dark-v11', // style URL
            center: [-0.198465, 51.505538], //[-122.458642, 37.758062], // starting position [lng, lat]
            zoom: 7, // starting zoom
            "pitch": 60
        });

        const colorRange = [
            [1, 152, 189],
            [73, 227, 206],
            [216, 254, 181],
            [254, 237, 177],
            [254, 173, 84],
            [209, 55, 78]
        ];

        const material = {
            ambient: 0.64,
            diffuse: 0.6,
            shininess: 32,
            specularColor: [51, 51, 51]
        };

        map.on('load', () => {
            d3.csv('https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv', (error, response) => {
                if (!error) {
                    const data = response.map(d => [Number(d.lng), Number(d.lat)]);

                    const myLayer2 = new MapboxLayer({
                        id: 'okb',
                        type: HexagonLayer,
                        colorRange,
                        coverage: 1,
                        data: data,
                        elevationRange: [0, 3000],
                        elevationScale: data && data.length ? 50 : 0,
                        extruded: true,
                        getPosition: d => d,
                        pickable: true,
                        radius: 2000,
                        upperPercentile: 100,
                        material,

                        // transitions: {
                        //     elevationScale: 3000
                        // }
                    })

                    map.addLayer(myLayer2)
                }
            });
        })


    </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值