首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Deck.GL ScatterplotLayer不呈现圆半径

Deck.GL ScatterplotLayer不呈现圆半径
EN

Stack Overflow用户
提问于 2020-05-16 12:22:35
回答 1查看 899关注 0票数 0

我试图在地图上画一个圆圈(在地图中间有一个标记)。然而,我的地图上什么也没有出现。我尝试过各种ScatterplotLayer选项,尝试切换位置,也尝试了getPosition:(d) => [d.coordinates,d.coordinates1]等等,但是地图上什么也没有出现。

代码语言:javascript
复制
import React, { useState, useEffect, createRef } from 'react';
import MapGL, { Marker, NavigationControl, FlyToInterpolator } from "react-map-gl";
import firebase from '@services/firebase';
import DeckGL, { GeoJsonLayer, MapController, ScatterplotLayer } from "deck.gl";

// import DeckGL from '@deck.gl/react';
// import { ScatterplotLayer } from '@deck.gl/layers';

import { Avatar } from "antd";

function Map({ charities }) {

    const initViewport = {
        width: "100vw",
        height: "100vh",
        latitude: 41.5868,
        longitude: -93.625,
        zoom: 2,
    };

    const [viewport, setViewport] = useState(initViewport);

    function resize() {
        setViewport({
            ...viewport,
            width: window.innerWidth,
            height: window.innerHeight
        });
    }

    function flyTo(latitude, longitude) {
        setViewport({
            ...viewport,
            zoom: 13,
            latitude,
            longitude,
            transitionInterpolator: new FlyToInterpolator(),
            transitionDuration: 3000,
        });
    }

    useEffect(() => {
        window.addEventListener("resize", resize);
        return () => window.removeEventListener("resize", resize);
    }, []);

    const layer = new ScatterplotLayer({
        id: "scatterplot-layer",
        data: [
            {
                name: "Colma (COLM)",
                code: "CM",
                address: "365 D Street, Colma CA 94014",
                exits: 100000000,
                coordinates: [60.8938364, 9.7150779],
            },
        ],
        pickable: true,
        opacity: 0.8,
        stroked: true,
        filled: true,
        radiusScale: 6,
        radiusMinPixels: 1,
        radiusMaxPixels: 100,
        lineWidthMinPixels: 1,
        getPosition: (d) => d.coordinates,
        getRadius: (d) => Math.sqrt(d.exits),
        getFillColor: (d) => [255, 140, 0],
        getLineColor: (d) => [0, 0, 0],
        onHover: ({ object, x, y }) => {
            const tooltip = `${object.name}\n${object.address}`;
        },
    });

    return (
        <MapGL
            preventStyleDiffing={true}
            reuseMaps
            mapStyle='mapbox://styles/mapbox/streets-v9'
            mapboxApiAccessToken='MAPBOX_TOKEN'
            onViewportChange={(viewport) => setViewport(viewport)}
            {...viewport}
        >
            <DeckGL
                width='100%'
                height='100%'
                {...viewport}
                debug
                layers={[layer]}
            />
        </MapGL>
    );
}

export default Map;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-16 21:27:41

问题是您没有在DeckGL组件中设置DeckGL。您的代码引发以下错误:

视图-Manager.js:232甲板:缺少viewStateinitialViewState

试着改变

代码语言:javascript
复制
...
<DeckGL
  width='100%'
  height='100%'
  {..viewport}
  debug
  layers={[layer]}
/>
...

以下各点:

代码语言:javascript
复制
...
<DeckGL
  width='100%'
  height='100%'
  viewState={viewport}
  debug
  layers={[layer]}
/>
...

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61836646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档