• Stars
    star
    274
  • Rank 150,274 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 5 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Create beautiful and interactive React + ThreeJS globe visualizations with ease.

🌎 react-globe

Create beautiful and interactive React + ThreeJS globe visualizations with ease.

image

Features

  • ✨ Beautiful and complete with clouds, backgrounds and lighting.
  • ✌️ Incredibly simple to use and configure.
  • πŸ“ Render interactive markers on the globe using simple data.
  • 🎞 Easy globe animations and marker transitions.
  • βš›οΈ Modern Javascript + build tools.

Install

npm install react-globe

Note that react-globe requires react >= 16.13.1 and three >= 0.118.3 as peer dependencies.

Use

Simple

Render a simple interactive globe with a single line of code!

import React from 'react';
import ReactGlobe from 'react-globe';

function SimpleGlobe() {
  return <ReactGlobe />
}

Kitchen Sink

An example showing various features (markers, tooltips, options, callbacks, textures).

import React, { useState } from 'react';
import ReactGlobe from 'react-globe';

// import optional tippy styles for tooltip support
import 'tippy.js/dist/tippy.css';
import 'tippy.js/animations/scale.css';

function MyGlobe() {
  // support rendering markers with simple data
  const markers = [
    {
      id: 'marker1',
      city: 'Singapore',
      color: 'red',
      coordinates: [1.3521, 103.8198],
      value: 50,
    },
    {
      id: 'marker2',
      city: 'New York',
      color: 'blue',
      coordinates: [40.73061, -73.935242],
      value: 25,
    },
    {
      id: 'marker3',
      city: 'San Francisco',
      color: 'orange',
      coordinates: [37.773972, -122.431297],
      value: 35,
    },
    {
      id: 'marker4',
      city: 'Beijing',
      color: 'gold',
      coordinates: [39.9042, 116.4074],
      value: 135,
    },
    {
      id: 'marker5',
      city: 'London',
      color: 'green',
      coordinates: [51.5074, 0.1278],
      value: 80,
    },
    {
      id: 'marker6',
      city: 'Los Angeles',
      color: 'gold',
      coordinates: [29.7604, -95.3698],
      value: 54,
    },
  ];

  // simple and extensive options to configure globe
  const options = {
    ambientLightColor: 'red',
    cameraRotateSpeed: 0.5,
    focusAnimationDuration: 2000,
    focusEasingFunction: ['Linear', 'None'],
    pointLightColor: 'gold',
    pointLightIntensity: 1.5,
    globeGlowColor: 'blue',
    markerTooltipRenderer: marker => `${marker.city} (${marker.value})`,
  };

  const [globe, setGlobe] = useState(null);
  console.log(globe); // captured globe instance with API methods

  // simple component usage
  return (
    <ReactGlobe
      height="100vh"
      globeBackgroundTexture="https://your/own/background.jpg"
      globeCloudsTexture={null}
      globeTexture="https://your/own/globe.jpg"
      initialCoordinates={[1.3521, 103.8198]}
      markers={markers}
      options={options}
      width="100%"
      onClickMarker={(marker, markerObject, event) => console.log(marker, markerObject, event)}
      onGetGlobe={setGlobe}
      onMouseOutMarker={(marker, markerObject, event) => console.log(marker, markerObject, event)}
      onGlobeTextureLoaded={() => console.log('globe loaded')}
      onMouseOverMarker={(marker, markerObject, event) => console.log(marker, markerObject, event)}
    >
  )
}

Examples

View all documented examples and gallery of react-globe applications at https://react-globe.netlify.com/.

You can also run the examples locally:

git clone [email protected]:chrisrzhou/react-globe

cd react-globe
npm install && npm run docs

Basic Example (no props)

image

Edit react-globe-simple

Interactive Example (with markers)

image

Edit react-globe-interactive

Custom Marker Renderer Example

image

Edit react-globe-interactive

Google Globe Trends

image

Link to app

Contributing

The code is written in typescript, linted with xo, and built with microbundle. Examples and documentations are built with docz.

Feel free to contribute by submitting a pull request.

More Repositories

1

react-wordcloud

☁️ Simple React + D3 wordcloud component with powerful features.
JavaScript
193
star
2

RShiny-EC2Bootstrap

R Shiny EC2 Bootstrap Guide
80
star
3

google-globe-trends

Create beautiful and interactive Google Trends globe visualizations with ease
JavaScript
34
star
4

egghead-redux

Egghead Redux Series by Dan Abramov
JavaScript
33
star
5

surveyless

Build, run, and analyze simple serverless surveys
JavaScript
14
star
6

qraffiti

Generete graffiti with QR codes
JavaScript
13
star
7

unified-doc

πŸ“œ unified document APIs and renderers
JavaScript
12
star
8

RShiny-LaborForceStatistics

R Shiny application: Labor Force Statistics visualizations
R
9
star
9

RShiny-PowerToChoose

R Shiny application: Power to Choose electricity plans
R
9
star
10

RShiny-BoxOfficeMojo

R Shiny application: Box Office Mojo Visualizations
R
8
star
11

wordcloud-generator

Create and share wordcloud visualizations!
JavaScript
8
star
12

react-3d-globe

[DEPRECATED] React ThreeJS Globe
JavaScript
8
star
13

hackjs

Functional programs for hacking in node
JavaScript
6
star
14

io

Imprinting myself digitally on the web, one commit at a time.
JavaScript
4
star
15

RShiny-StateCrimeRates

R Shiny application: State Crime Rates Vsualizations
R
4
star
16

noodles

Making Chinese homemade noodles
3
star
17

quotes

A simple UI built around quotes written in markdown
JavaScript
3
star
18

ui

Simple progressive design system and documentation for personal projects.
JavaScript
3
star
19

datanaut.io

datanaut.io - chrisrzhou's data blog
HTML
2
star
20

ctf

hacking fun
2
star
21

dear-rajiv

2
star
22

d2cube-mirror

A mirror of d2cube/d2cube for serving the NextJS app
JavaScript
2
star
23

dev

My development setup
Vim Script
2
star
24

dev-2020

My developer journey leading up to 2020
JavaScript
2
star
25

init-js

A simple config-driven CLI to initialize JS projects.
JavaScript
2
star
26

unverse

A personal collection of writings and meditations in the Unverse
2
star
27

cypress-code-coverage-issue-472

Bug repro for issue #472
JavaScript
1
star
28

chris-and-monika

Chris + Monika's wedding page!
JavaScript
1
star