globe.gl 2.24.5 → 2.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -6
- package/dist/globe.gl.common.js +24 -2
- package/dist/globe.gl.d.ts +5 -0
- package/dist/globe.gl.js +245 -147
- package/dist/globe.gl.js.map +1 -1
- package/dist/globe.gl.min.js +4 -4
- package/dist/globe.gl.module.js +24 -2
- package/example/clouds/index.html +1 -2
- package/example/datasets/space-track-leo.txt +8058 -0
- package/example/satellites/index.html +81 -0
- package/example/satellites/preview.png +0 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -44,6 +44,7 @@ And check out the [React bindings](https://github.com/vasturiano/react-globe.gl)
|
|
|
44
44
|
* [World Volcanoes](https://vasturiano.github.io/globe.gl/example/volcanoes/) ([source](https://github.com/vasturiano/globe.gl/blob/master/example/volcanoes/index.html))
|
|
45
45
|
* [US outbound international airline routes](https://vasturiano.github.io/globe.gl/example/airline-routes/us-international-outbound.html) ([source](https://github.com/vasturiano/globe.gl/blob/master/example/airline-routes/us-international-outbound.html))
|
|
46
46
|
* [Earth Shield](https://vasturiano.github.io/globe.gl/example/earth-shield/) ([source](https://github.com/vasturiano/globe.gl/blob/master/example/earth-shield/index.html))
|
|
47
|
+
* [Satellites](https://vasturiano.github.io/globe.gl/example/satellites/index.html) ([source](https://github.com/vasturiano/globe.gl/blob/master/example/satellites/index.html))
|
|
47
48
|
* [Submarine Cables](https://vasturiano.github.io/globe.gl/example/submarine-cables/index.html) ([source](https://github.com/vasturiano/globe.gl/blob/master/example/submarine-cables/index.html))
|
|
48
49
|
* [Moon Landing Sites](https://vasturiano.github.io/globe.gl/example/moon-landing-sites/index.html) ([source](https://github.com/vasturiano/globe.gl/blob/master/example/moon-landing-sites/index.html))
|
|
49
50
|
|
|
@@ -321,6 +322,24 @@ Globe({ configOptions })(<domElement>)
|
|
|
321
322
|
| <b>onLabelRightClick</b>(<i>fn</i>) | Callback function for label right-clicks. The label object, the event object and the clicked coordinates are included as arguments: `onLabelRightClick(label, event, { lat, lng, altitude })`. | - |
|
|
322
323
|
| <b>onLabelHover</b>(<i>fn</i>) | Callback function for label mouse over events. The label object (or `null` if there's no label under the mouse line of sight) is included as the first argument, and the previous label object (or `null`) as second argument: `onLabelHover(label, prevlabel)`. | - |
|
|
323
324
|
|
|
325
|
+
### Objects Layer
|
|
326
|
+
|
|
327
|
+
<p align="center">
|
|
328
|
+
<a href="//vasturiano.github.io/globe.gl/example/satellites/"><img width="70%" src="https://vasturiano.github.io/globe.gl/example/satellites/preview.png"></a>
|
|
329
|
+
</p>
|
|
330
|
+
|
|
331
|
+
| Method | Description | Default |
|
|
332
|
+
| --- | --- | :--: |
|
|
333
|
+
| <b>objectsData</b>([<i>array</i>]) | Getter/setter for the list of custom 3D objects to represent in the objects layer. Each object is rendered according to the `objectThreeObject` method. | `[]` |
|
|
334
|
+
| <b>objectLabel</b>([<i>str</i> or <i>fn</i>]) | Object accessor function or attribute for its own tooltip label. Supports plain text or HTML content. | `name` |
|
|
335
|
+
| <b>objectLat</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Object accessor function, attribute or a numeric constant for the latitude coordinate of the object's position. | `lat` |
|
|
336
|
+
| <b>objectLng</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Object accessor function, attribute or a numeric constant for the longitude coordinate of the object's position. | `lng` |
|
|
337
|
+
| <b>objectAltitude</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Object accessor function, attribute or a numeric constant for the altitude coordinate of the object's position, in terms of globe radius units. | 0.01 |
|
|
338
|
+
| <b>objectThreeObject</b>([<i>Object3d</i>, <i>str</i> or <i>fn</i>]) | Object accessor function or attribute for defining a custom 3d object to render as part of the objects map layer. Should return an instance of [ThreeJS Object3d](https://threejs.org/docs/index.html#api/core/Object3D). | *A yellow sphere* |
|
|
339
|
+
| <b>onObjectClick</b>(<i>fn</i>) | Callback function for object (left-button) clicks. The object itself, the event and the clicked coordinates are included as arguments: `onObjectClick(obj, event, { lat, lng, altitude })`. | - |
|
|
340
|
+
| <b>onObjectRightClick</b>(<i>fn</i>) | Callback function for object right-clicks. The object itself, the event and the clicked coordinates are included as arguments: `onObjectRightClick(obj, event, { lat, lng, altitude })`. | - |
|
|
341
|
+
| <b>onObjectHover</b>(<i>fn</i>) | Callback function for object mouse over events. The object itself (or `null` if there's no object under the mouse line of sight) is included as the first argument, and the previous object (or `null`) as second argument: `onObjectHover(obj, prevObj)`. | - |
|
|
342
|
+
|
|
324
343
|
### Custom Layer
|
|
325
344
|
|
|
326
345
|
<p align="center">
|
|
@@ -331,8 +350,8 @@ Globe({ configOptions })(<domElement>)
|
|
|
331
350
|
| --- | --- | :--: |
|
|
332
351
|
| <b>customLayerData</b>([<i>array</i>]) | Getter/setter for the list of items to represent in the custom map layer. Each item is rendered according to the `customThreeObject` method. | `[]` |
|
|
333
352
|
| <b>customLayerLabel</b>([<i>str</i> or <i>fn</i>]) | Object accessor function or attribute for label (shown as tooltip). Supports plain text or HTML content. | `name` |
|
|
334
|
-
| <b>customThreeObject</b>([<i>Object3d</i>, <i>str</i> or <i>fn</i>]) | Object accessor function or attribute for generating a custom 3d object to render as part of the custom map layer. Should return an instance of [ThreeJS Object3d](https://threejs.org/docs/index.html#api/core/Object3D).
|
|
335
|
-
| <b>customThreeObjectUpdate</b>([<i>str</i> or <i>fn</i>]) | Object accessor function or attribute for updating an existing custom 3d object with new data. This can be used for performance improvement on data updates as the objects don't need to be removed and recreated at each update. The callback method's signature includes the object to be update
|
|
353
|
+
| <b>customThreeObject</b>([<i>Object3d</i>, <i>str</i> or <i>fn</i>]) | Object accessor function or attribute for generating a custom 3d object to render as part of the custom map layer. Should return an instance of [ThreeJS Object3d](https://threejs.org/docs/index.html#api/core/Object3D). | `null` |
|
|
354
|
+
| <b>customThreeObjectUpdate</b>([<i>str</i> or <i>fn</i>]) | Object accessor function or attribute for updating an existing custom 3d object with new data. This can be used for performance improvement on data updates as the objects don't need to be removed and recreated at each update. The callback method's signature includes the object to be update and its new data: `customThreeObjectUpdate((obj, objData) => { ... })`. | `null` |
|
|
336
355
|
| <b>onCustomLayerClick</b>(<i>fn</i>) | Callback function for custom object (left-button) clicks. The custom object, the event object and the clicked coordinates are included as arguments: `onCustomLayerClick(obj, event, { lat, lng, altitude })`. | - |
|
|
337
356
|
| <b>onCustomLayerRightClick</b>(<i>fn</i>) | Callback function for custom object right-clicks. The custom object, the event object and the clicked coordinates are included as arguments: `onCustomLayerRightClick(obj, event, { lat, lng, altitude })`. | - |
|
|
338
357
|
| <b>onCustomLayerHover</b>(<i>fn</i>) | Callback function for custom object mouse over events. The custom object (or `null` if there's no object under the mouse line of sight) is included as the first argument, and the previous custom object (or `null`) as second argument: `onCustomLayerHover(obj, prevObj)`. | - |
|
|
@@ -358,10 +377,11 @@ Globe({ configOptions })(<domElement>)
|
|
|
358
377
|
|
|
359
378
|
| Method | Description |
|
|
360
379
|
| --- | --- |
|
|
361
|
-
| <b>
|
|
362
|
-
| <b>
|
|
363
|
-
| <b>
|
|
364
|
-
| <b>
|
|
380
|
+
| <b>getGlobeRadius</b>() | Returns the cartesian distance of a globe radius in absolute spatial units. |
|
|
381
|
+
| <b>getCoords</b>(<i>lat</i>, <i>lng</i> [,<i>altitude</i>]) | Utility method to translate spherical coordinates to cartesian. Given a pair of latitude/longitude coordinates and optionally altitude (in terms of globe radius units), returns the equivalent `{x, y, z}` cartesian spatial coordinates. |
|
|
382
|
+
| <b>getScreenCoords</b>(<i>lat</i>, <i>lng</i> [,<i>altitude</i>]) | Utility method to translate spherical coordinates to the viewport domain. Given a pair of latitude/longitude coordinates and optionally altitude (in terms of globe radius units), returns the current equivalent `{x, y}` in viewport coordinates. |
|
|
383
|
+
| <b>toGeoCoords</b>({ <i>x</i>, <i>y</i>, <i>z</i> }) | Utility method to translate cartesian coordinates to the geographic domain. Given a set of 3D cartesian coordinates `{x, y, z}`, returns the equivalent `{lat, lng, altitude}` spherical coordinates. Altitude is defined in terms of globe radius units. |
|
|
384
|
+
| <b>toGlobeCoords</b>(<i>x</i>, <i>y</i>) | Utility method to translate viewport coordinates to the globe surface coordinates directly under the specified viewport pixel. Returns the globe coordinates in the format `{ lat, lng }`, or `null` if the globe does not currently intersect with that viewport location. |
|
|
365
385
|
|
|
366
386
|
## Giving Back
|
|
367
387
|
|
package/dist/globe.gl.common.js
CHANGED
|
@@ -198,10 +198,10 @@ var three = window.THREE ? window.THREE // Prefer consumption from global THREE,
|
|
|
198
198
|
// Expose config from ThreeGlobe
|
|
199
199
|
|
|
200
200
|
var bindGlobe = linkKapsule('globe', ThreeGlobe__default["default"]);
|
|
201
|
-
var linkedGlobeProps = Object.assign.apply(Object, _toConsumableArray(['globeImageUrl', 'bumpImageUrl', 'showGlobe', 'showGraticules', 'showAtmosphere', 'atmosphereColor', 'atmosphereAltitude', 'globeMaterial', 'onGlobeReady', 'pointsData', 'pointLat', 'pointLng', 'pointColor', 'pointAltitude', 'pointRadius', 'pointResolution', 'pointsMerge', 'pointsTransitionDuration', 'arcsData', 'arcStartLat', 'arcStartLng', 'arcEndLat', 'arcEndLng', 'arcColor', 'arcAltitude', 'arcAltitudeAutoScale', 'arcStroke', 'arcCurveResolution', 'arcCircularResolution', 'arcDashLength', 'arcDashGap', 'arcDashInitialGap', 'arcDashAnimateTime', 'arcsTransitionDuration', 'polygonsData', 'polygonGeoJsonGeometry', 'polygonCapColor', 'polygonCapMaterial', 'polygonSideColor', 'polygonSideMaterial', 'polygonStrokeColor', 'polygonAltitude', 'polygonCapCurvatureResolution', 'polygonsTransitionDuration', 'pathsData', 'pathPoints', 'pathPointLat', 'pathPointLng', 'pathPointAlt', 'pathResolution', 'pathColor', 'pathStroke', 'pathDashLength', 'pathDashGap', 'pathDashInitialGap', 'pathDashAnimateTime', 'pathTransitionDuration', 'hexBinPointsData', 'hexBinPointLat', 'hexBinPointLng', 'hexBinPointWeight', 'hexBinResolution', 'hexMargin', 'hexTopCurvatureResolution', 'hexTopColor', 'hexSideColor', 'hexAltitude', 'hexBinMerge', 'hexTransitionDuration', 'hexPolygonsData', 'hexPolygonGeoJsonGeometry', 'hexPolygonColor', 'hexPolygonAltitude', 'hexPolygonResolution', 'hexPolygonMargin', 'hexPolygonCurvatureResolution', 'hexPolygonsTransitionDuration', 'tilesData', 'tileLat', 'tileLng', 'tileAltitude', 'tileWidth', 'tileHeight', 'tileUseGlobeProjection', 'tileMaterial', 'tileCurvatureResolution', 'tilesTransitionDuration', 'ringsData', 'ringLat', 'ringLng', 'ringAltitude', 'ringColor', 'ringResolution', 'ringMaxRadius', 'ringPropagationSpeed', 'ringRepeatPeriod', 'labelsData', 'labelLat', 'labelLng', 'labelAltitude', 'labelRotation', 'labelText', 'labelSize', 'labelTypeFace', 'labelColor', 'labelResolution', 'labelIncludeDot', 'labelDotRadius', 'labelDotOrientation', 'labelsTransitionDuration', 'customLayerData', 'customThreeObject', 'customThreeObjectUpdate'].map(function (p) {
|
|
201
|
+
var linkedGlobeProps = Object.assign.apply(Object, _toConsumableArray(['globeImageUrl', 'bumpImageUrl', 'showGlobe', 'showGraticules', 'showAtmosphere', 'atmosphereColor', 'atmosphereAltitude', 'globeMaterial', 'onGlobeReady', 'pointsData', 'pointLat', 'pointLng', 'pointColor', 'pointAltitude', 'pointRadius', 'pointResolution', 'pointsMerge', 'pointsTransitionDuration', 'arcsData', 'arcStartLat', 'arcStartLng', 'arcEndLat', 'arcEndLng', 'arcColor', 'arcAltitude', 'arcAltitudeAutoScale', 'arcStroke', 'arcCurveResolution', 'arcCircularResolution', 'arcDashLength', 'arcDashGap', 'arcDashInitialGap', 'arcDashAnimateTime', 'arcsTransitionDuration', 'polygonsData', 'polygonGeoJsonGeometry', 'polygonCapColor', 'polygonCapMaterial', 'polygonSideColor', 'polygonSideMaterial', 'polygonStrokeColor', 'polygonAltitude', 'polygonCapCurvatureResolution', 'polygonsTransitionDuration', 'pathsData', 'pathPoints', 'pathPointLat', 'pathPointLng', 'pathPointAlt', 'pathResolution', 'pathColor', 'pathStroke', 'pathDashLength', 'pathDashGap', 'pathDashInitialGap', 'pathDashAnimateTime', 'pathTransitionDuration', 'hexBinPointsData', 'hexBinPointLat', 'hexBinPointLng', 'hexBinPointWeight', 'hexBinResolution', 'hexMargin', 'hexTopCurvatureResolution', 'hexTopColor', 'hexSideColor', 'hexAltitude', 'hexBinMerge', 'hexTransitionDuration', 'hexPolygonsData', 'hexPolygonGeoJsonGeometry', 'hexPolygonColor', 'hexPolygonAltitude', 'hexPolygonResolution', 'hexPolygonMargin', 'hexPolygonCurvatureResolution', 'hexPolygonsTransitionDuration', 'tilesData', 'tileLat', 'tileLng', 'tileAltitude', 'tileWidth', 'tileHeight', 'tileUseGlobeProjection', 'tileMaterial', 'tileCurvatureResolution', 'tilesTransitionDuration', 'ringsData', 'ringLat', 'ringLng', 'ringAltitude', 'ringColor', 'ringResolution', 'ringMaxRadius', 'ringPropagationSpeed', 'ringRepeatPeriod', 'labelsData', 'labelLat', 'labelLng', 'labelAltitude', 'labelRotation', 'labelText', 'labelSize', 'labelTypeFace', 'labelColor', 'labelResolution', 'labelIncludeDot', 'labelDotRadius', 'labelDotOrientation', 'labelsTransitionDuration', 'objectsData', 'objectLat', 'objectLng', 'objectAltitude', 'objectThreeObject', 'customLayerData', 'customThreeObject', 'customThreeObjectUpdate'].map(function (p) {
|
|
202
202
|
return _defineProperty({}, p, bindGlobe.linkProp(p));
|
|
203
203
|
})));
|
|
204
|
-
var linkedGlobeMethods = Object.assign.apply(Object, _toConsumableArray(['getCoords', 'toGeoCoords'].map(function (p) {
|
|
204
|
+
var linkedGlobeMethods = Object.assign.apply(Object, _toConsumableArray(['getGlobeRadius', 'getCoords', 'toGeoCoords'].map(function (p) {
|
|
205
205
|
return _defineProperty({}, p, bindGlobe.linkMethod(p));
|
|
206
206
|
}))); // Expose config from renderObjs
|
|
207
207
|
|
|
@@ -326,6 +326,19 @@ var globe = Kapsule__default["default"]({
|
|
|
326
326
|
onLabelHover: {
|
|
327
327
|
triggerUpdate: false
|
|
328
328
|
},
|
|
329
|
+
objectLabel: {
|
|
330
|
+
"default": 'name',
|
|
331
|
+
triggerUpdate: false
|
|
332
|
+
},
|
|
333
|
+
onObjectClick: {
|
|
334
|
+
triggerUpdate: false
|
|
335
|
+
},
|
|
336
|
+
onObjectRightClick: {
|
|
337
|
+
triggerUpdate: false
|
|
338
|
+
},
|
|
339
|
+
onObjectHover: {
|
|
340
|
+
triggerUpdate: false
|
|
341
|
+
},
|
|
329
342
|
customLayerLabel: {
|
|
330
343
|
"default": 'name',
|
|
331
344
|
triggerUpdate: false
|
|
@@ -476,6 +489,7 @@ var globe = Kapsule__default["default"]({
|
|
|
476
489
|
this.hexPolygonsData([]);
|
|
477
490
|
this.tilesData([]);
|
|
478
491
|
this.labelsData([]);
|
|
492
|
+
this.objectsData([]);
|
|
479
493
|
this.customLayerData([]);
|
|
480
494
|
}
|
|
481
495
|
}, linkedGlobeMethods), linkedRenderObjsMethods),
|
|
@@ -573,6 +587,9 @@ var globe = Kapsule__default["default"]({
|
|
|
573
587
|
label: function label(d) {
|
|
574
588
|
return d;
|
|
575
589
|
},
|
|
590
|
+
object: function object(d) {
|
|
591
|
+
return d;
|
|
592
|
+
},
|
|
576
593
|
custom: function custom(d) {
|
|
577
594
|
return d;
|
|
578
595
|
}
|
|
@@ -598,6 +615,7 @@ var globe = Kapsule__default["default"]({
|
|
|
598
615
|
hexPolygon: state.hexPolygonLabel,
|
|
599
616
|
tile: state.tileLabel,
|
|
600
617
|
label: state.labelLabel,
|
|
618
|
+
object: state.objectLabel,
|
|
601
619
|
custom: state.customLayerLabel
|
|
602
620
|
};
|
|
603
621
|
var globeObj = getGlobeObj(obj);
|
|
@@ -614,6 +632,7 @@ var globe = Kapsule__default["default"]({
|
|
|
614
632
|
hexPolygon: state.onHexPolygonHover,
|
|
615
633
|
tile: state.onTileHover,
|
|
616
634
|
label: state.onLabelHover,
|
|
635
|
+
object: state.onObjectHover,
|
|
617
636
|
custom: state.onCustomLayerHover
|
|
618
637
|
};
|
|
619
638
|
var clickObjFns = {
|
|
@@ -626,6 +645,7 @@ var globe = Kapsule__default["default"]({
|
|
|
626
645
|
hexPolygon: state.onHexPolygonClick,
|
|
627
646
|
tile: state.onTileClick,
|
|
628
647
|
label: state.onLabelClick,
|
|
648
|
+
object: state.onObjectClick,
|
|
629
649
|
custom: state.onCustomLayerClick
|
|
630
650
|
};
|
|
631
651
|
var hoverObj = getGlobeObj(obj); // ignore non-recognised obj types
|
|
@@ -666,6 +686,7 @@ var globe = Kapsule__default["default"]({
|
|
|
666
686
|
hexPolygon: state.onHexPolygonClick,
|
|
667
687
|
tile: state.onTileClick,
|
|
668
688
|
label: state.onLabelClick,
|
|
689
|
+
object: state.onObjectClick,
|
|
669
690
|
custom: state.onCustomLayerClick
|
|
670
691
|
};
|
|
671
692
|
var globeObj = getGlobeObj(obj);
|
|
@@ -704,6 +725,7 @@ var globe = Kapsule__default["default"]({
|
|
|
704
725
|
hexPolygon: state.onHexPolygonRightClick,
|
|
705
726
|
tile: state.onTileRightClick,
|
|
706
727
|
label: state.onLabelRightClick,
|
|
728
|
+
object: state.onObjectRightClick,
|
|
707
729
|
custom: state.onCustomLayerRightClick
|
|
708
730
|
};
|
|
709
731
|
var globeObj = getGlobeObj(obj);
|
package/dist/globe.gl.d.ts
CHANGED
|
@@ -53,6 +53,8 @@ interface GlobeGenericInstance<ChainableInstance> extends ThreeGlobeGeneric<Chai
|
|
|
53
53
|
tileLabel(textAccessor: ObjAccessor<string>): ChainableInstance;
|
|
54
54
|
labelLabel(): ObjAccessor<string>;
|
|
55
55
|
labelLabel(textAccessor: ObjAccessor<string>): ChainableInstance;
|
|
56
|
+
objectLabel(): ObjAccessor<string>;
|
|
57
|
+
objectLabel(textAccessor: ObjAccessor<string>): ChainableInstance;
|
|
56
58
|
customLayerLabel(): ObjAccessor<string>;
|
|
57
59
|
customLayerLabel(textAccessor: ObjAccessor<string>): ChainableInstance;
|
|
58
60
|
|
|
@@ -83,6 +85,9 @@ interface GlobeGenericInstance<ChainableInstance> extends ThreeGlobeGeneric<Chai
|
|
|
83
85
|
onLabelClick(callback: (label: object, event: MouseEvent, coords: { lat: number, lng: number, altitude: number }) => void): ChainableInstance;
|
|
84
86
|
onLabelRightClick(callback: (label: object, event: MouseEvent, coords: { lat: number, lng: number, altitude: number }) => void): ChainableInstance;
|
|
85
87
|
onLabelHover(callback: (label: object | null, prevLabel: object | null) => void): ChainableInstance;
|
|
88
|
+
onObjectClick(callback: (obj: object, event: MouseEvent, coords: { lat: number, lng: number, altitude: number }) => void): ChainableInstance;
|
|
89
|
+
onObjectRightClick(callback: (obj: object, event: MouseEvent, coords: { lat: number, lng: number, altitude: number }) => void): ChainableInstance;
|
|
90
|
+
onObjectHover(callback: (obj: object | null, prevObj: object | null) => void): ChainableInstance;
|
|
86
91
|
onCustomLayerClick(callback: (obj: object, event: MouseEvent, coords: { lat: number, lng: number, altitude: number }) => void): ChainableInstance;
|
|
87
92
|
onCustomLayerRightClick(callback: (obj: object, event: MouseEvent, coords: { lat: number, lng: number, altitude: number }) => void): ChainableInstance;
|
|
88
93
|
onCustomLayerHover(callback: (obj: object | null, prevObj: object | null) => void): ChainableInstance;
|