微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Deck.gl全球建议

如何解决Deck.gl全球建议

我只是想知道是否有人可以提供Deck.gl中使用的地球仪的示例,它是实际的地球仪还是仅仅是视图。因为我希望能够查看地球,所以我做了一个较小的尝试,但是这给了我一个静态地图作为背景,而全局视图则放在了上面,这不是我想要的。

解决方法

我在deck.gl网站上找到了globe视图的示例,我更改了代码以使用React,这似乎运行得很好。

import React from 'react'
import {Deck,_GlobeView as GlobeView} from '@deck.gl/core';
import {SolidPolygonLayer,GeoJsonLayer,ArcLayer} from '@deck.gl/layers';
import { DeckGL } from 'deck.gl';

// source: Natural Earth http://www.naturalearthdata.com/ via geojson.xyz
const COUNTRIES =
  'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_admin_0_scale_rank.geojson'; //eslint-disable-line
const AIR_PORTS =
  'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_airports.geojson';

const INITIAL_VIEW_STATE = {
  latitude: 50,longitude: 50,zoom: 0
};

export function Globe() {

    return (
        <DeckGL 
            views={ new GlobeView()}
            initialViewState={INITIAL_VIEW_STATE}
            controller={true}
            layers= {[
                // A GeoJSON polygon that covers the entire earth
                // See /docs/api-reference/globe-view.md#remarks
                new SolidPolygonLayer({
                    id: 'background',data: [
                        // prettier-ignore
                        [[-180,90],[0,[180,-90],[-180,-90]]
                    ],opacity: 0.5,getPolygon: d => d,stroked: false,filled: true,getFillColor: [32,201,218]
                }),new GeoJsonLayer({
                    id: 'base-map',data: COUNTRIES,// Styles
                    stroked: true,lineWidthMinPixels: 2,getLineColor: [35,107,19],getFillColor: [41,156,22]
                }),new GeoJsonLayer({
                    id: 'airports',data: AIR_PORTS,// Styles
                    filled: true,pointRadiusMinPixels: 2,pointRadiusScale: 2000,getRadius: f => 11 - f.properties.scalerank,getFillColor: [200,80,180],// Interactive props
                    pickable: true,autoHighlight: true,onClick: info =>
                        // eslint-disable-next-line
                        info.object && alert(`${info.object.properties.name} (${info.object.properties.abbrev})`)
                }),new ArcLayer({
                    id: 'arcs',dataTransform: d => d.features.filter(f => f.properties.scalerank < 4),// Styles
                    getSourcePosition: f => [-0.4531566,51.4709959],// London
                    getTargetPosition: f => f.geometry.coordinates,getSourceColor: [0,128,200],getTargetColor: [200,80],getWidth: 1
                })
            ]}
        />   
    )
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。