JSFiddle - React, Tailwind, and code Playground
HTML
<script src="//graetzer.org/public/globe/three.min.js"></script>
<script src="//graetzer.org/public/globe/Detector.js"></script>
<div class="col-sm-9" id="globe-container">
<div id="globe-placeholder" style="width:100%;height:300px;background:transparent url('https://graetzer.org/public/globe/loading.gif') no-repeat center center"></div>
</div>
JavaScript
var globe, places, active;
var container = document.getElementById('globe-container');
var placeholder = document.getElementById('globe-placeholder');
if (!Detector.webgl) {
container.removeChild(placeholder);
Detector.addGetWebGLMessage({parent:container});
} else {
var globeImg = document.createElement('IMG');
globeImg.crossOrigin = "Anonymous";
globeImg.onload = function() {
var canvas = document.createElement('canvas');
canvas.width = globeImg.width;
canvas.height = globeImg.height;
var context = canvas.getContext('2d');
context.drawImage(globeImg, 0, 0);
var worldMap = context.getImageData(0, 0, globeImg.width, globeImg.height);
globe = new DAT.Globe(container);
globe.setData(worldMap, []);
globe.animate();
container.removeChild(placeholder);
};
globeImg.src = "http://i.imgur.com/f6DSPoL.png";
}
var DAT = DAT || {};
DAT.Globe = function(container, opts) {
opts = opts || {};
var camera, scene, renderer, w, h;
var mesh, atmosphere, point;
var overRenderer, mouseDown, zoomTouchSpread;
var curZoomSpeed = 0;
var zoomSpeed = 50;
var mouse = {
x: 0,
y: 0
},
mouseOnDown = {
x: 0,
y: 0
};
var rotation = {
x: 0,
y: 0
},
target = {
x: Math.PI * 3 / 2,
y: Math.PI / 8.0
},
targetOnDown = {
x: 0,
y: 0
};
var distance = 100000,
distanceTarget = 100000;
var PI_HALF = Math.PI / 2;
function init() {
var shader, uniforms, material;
//600 is enough to get the globe in full and have a good render performance
w = container.clientWidth || 600;
h = Math.min(600, w) || 600;
camera = new THREE.PerspectiveCamera(25, w / h, 1, 10000);
camera.position.z = distance;
scene = new THREE.Scene();
var geometry = new THREE.SphereGeometry(200, 40, 30);
var material = new THREE.MeshBasicMaterial({
color: 0xffffff
...