geojs 1.12.4 → 1.12.6
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/geo.js +823 -856
- package/geo.lean.js +823 -856
- package/geo.lean.min.js +3 -3
- package/geo.min.js +4 -4
- package/package.json +1 -1
- package/src/annotation/annotation.js +17 -18
- package/src/annotation/circleAnnotation.js +3 -3
- package/src/annotation/ellipseAnnotation.js +4 -4
- package/src/annotation/lineAnnotation.js +3 -3
- package/src/annotation/pointAnnotation.js +3 -4
- package/src/annotation/polygonAnnotation.js +2 -3
- package/src/annotation/rectangleAnnotation.js +8 -8
- package/src/annotation/squareAnnotation.js +3 -3
- package/src/annotationLayer.js +4 -4
- package/src/choroplethFeature.js +2 -3
- package/src/contourFeature.js +2 -3
- package/src/feature.js +2 -2
- package/src/graphFeature.js +3 -3
- package/src/gridFeature.js +2 -3
- package/src/heatmapFeature.js +1 -2
- package/src/index.js +1 -1
- package/src/isolineFeature.js +3 -4
- package/src/layer.js +1 -1
- package/src/lineFeature.js +1 -3
- package/src/map.js +11 -11
- package/src/mapInteractor.js +13 -14
- package/src/markerFeature.js +2 -4
- package/src/meshFeature.js +2 -3
- package/src/osmLayer.js +4 -5
- package/src/pathFeature.js +1 -2
- package/src/pixelmapFeature.js +1 -1
- package/src/pixelmapLayer.js +3 -4
- package/src/pointFeature.js +2 -4
- package/src/polygonFeature.js +1 -2
- package/src/quadFeature.js +1 -1
- package/src/registry.js +29 -28
- package/src/svg/pathFeature.js +1 -2
- package/src/textFeature.js +1 -3
- package/src/tileLayer.js +5 -4
- package/src/trackFeature.js +7 -14
- package/src/ui/scaleWidget.js +3 -3
- package/src/ui/widget.js +1 -2
- package/src/util/clustering.js +1 -1
- package/src/util/common.js +38 -1
- package/src/util/mesh.js +3 -4
- package/src/util/mockVGL.js +1 -2
- package/src/vectorFeature.js +1 -3
package/src/map.js
CHANGED
|
@@ -332,7 +332,7 @@ var map = function (arg) {
|
|
|
332
332
|
* @returns {geo.geoPosition}
|
|
333
333
|
*/
|
|
334
334
|
this.origin = function () {
|
|
335
|
-
return
|
|
335
|
+
return Object.assign({}, m_origin);
|
|
336
336
|
};
|
|
337
337
|
|
|
338
338
|
/**
|
|
@@ -594,7 +594,7 @@ var map = function (arg) {
|
|
|
594
594
|
this.center = function (coordinates, gcs, ignoreDiscreteZoom, ignoreClampBounds) {
|
|
595
595
|
var center;
|
|
596
596
|
if (coordinates === undefined) {
|
|
597
|
-
center =
|
|
597
|
+
center = Object.assign({}, m_this.worldToGcs(m_center, gcs));
|
|
598
598
|
return center;
|
|
599
599
|
}
|
|
600
600
|
|
|
@@ -901,7 +901,7 @@ var map = function (arg) {
|
|
|
901
901
|
if (typeof readerOrName === 'string') {
|
|
902
902
|
opts = opts || {};
|
|
903
903
|
if (!opts.layer) {
|
|
904
|
-
opts.layer = m_this.createLayer('feature',
|
|
904
|
+
opts.layer = m_this.createLayer('feature', Object.assign({}, opts));
|
|
905
905
|
}
|
|
906
906
|
opts.renderer = opts.layer.renderer().api();
|
|
907
907
|
m_fileReader = registry.createFileReader(readerOrName, opts);
|
|
@@ -1060,7 +1060,7 @@ var map = function (arg) {
|
|
|
1060
1060
|
*/
|
|
1061
1061
|
this.zoomRange = function (arg, noRefresh) {
|
|
1062
1062
|
if (arg === undefined) {
|
|
1063
|
-
return
|
|
1063
|
+
return Object.assign({}, m_validZoomRange);
|
|
1064
1064
|
}
|
|
1065
1065
|
if (arg.max !== undefined) {
|
|
1066
1066
|
m_validZoomRange.max = arg.max;
|
|
@@ -1130,12 +1130,12 @@ var map = function (arg) {
|
|
|
1130
1130
|
/* The queued transition needs to combine the current transition's
|
|
1131
1131
|
* endpoint, any other queued transition, and the new transition to be
|
|
1132
1132
|
* complete. */
|
|
1133
|
-
var transitionEnd =
|
|
1133
|
+
var transitionEnd = util.deepMerge({}, m_transition.end);
|
|
1134
1134
|
if (transitionEnd.center && m_gcs !== m_ingcs) {
|
|
1135
1135
|
transitionEnd.center = transform.transformCoordinates(
|
|
1136
1136
|
m_gcs, m_ingcs, transitionEnd.center);
|
|
1137
1137
|
}
|
|
1138
|
-
m_queuedTransition =
|
|
1138
|
+
m_queuedTransition = Object.assign(
|
|
1139
1139
|
{}, transitionEnd || {}, m_queuedTransition || {}, opts);
|
|
1140
1140
|
return m_this;
|
|
1141
1141
|
}
|
|
@@ -1188,13 +1188,13 @@ var map = function (arg) {
|
|
|
1188
1188
|
|
|
1189
1189
|
if (opts.center) {
|
|
1190
1190
|
gcs = (gcs === null ? m_gcs : (gcs === undefined ? m_ingcs : gcs));
|
|
1191
|
-
opts =
|
|
1191
|
+
opts = util.deepMerge({}, opts);
|
|
1192
1192
|
opts.center = util.normalizeCoordinates(opts.center);
|
|
1193
1193
|
if (gcs !== m_gcs) {
|
|
1194
1194
|
opts.center = transform.transformCoordinates(gcs, m_gcs, opts.center);
|
|
1195
1195
|
}
|
|
1196
1196
|
}
|
|
1197
|
-
opts =
|
|
1197
|
+
opts = util.deepMerge({}, defaultOpts, opts);
|
|
1198
1198
|
|
|
1199
1199
|
m_transition = {
|
|
1200
1200
|
start: {
|
|
@@ -1756,7 +1756,7 @@ var map = function (arg) {
|
|
|
1756
1756
|
/* if asked to wait, return a Deferred that will do so, calling the
|
|
1757
1757
|
* screenshot function without waiting once it is done. */
|
|
1758
1758
|
if (opts.wait) {
|
|
1759
|
-
var optsWithoutWait =
|
|
1759
|
+
var optsWithoutWait = Object.assign({}, opts, {wait: false});
|
|
1760
1760
|
defer = $.Deferred();
|
|
1761
1761
|
|
|
1762
1762
|
var waitForRAF = function () {
|
|
@@ -2228,7 +2228,7 @@ var map = function (arg) {
|
|
|
2228
2228
|
}
|
|
2229
2229
|
var dx, dy, maxBounds = m_maxBounds;
|
|
2230
2230
|
if (rotation) {
|
|
2231
|
-
maxBounds =
|
|
2231
|
+
maxBounds = Object.assign({}, m_maxBounds);
|
|
2232
2232
|
/* When rotated, expand the maximum bounds so that they will allow the
|
|
2233
2233
|
* corners to be visible. We know the rotated bounding box, plus the
|
|
2234
2234
|
* original maximum bounds. To fit the corners of the maximum bounds, we
|
|
@@ -2417,7 +2417,7 @@ var map = function (arg) {
|
|
|
2417
2417
|
m_zoom = this._fix_zoom(m_zoom);
|
|
2418
2418
|
m_rotation = fix_rotation(m_rotation);
|
|
2419
2419
|
// Now update to the correct center and zoom level
|
|
2420
|
-
this.center(
|
|
2420
|
+
this.center(Object.assign({}, arg.center || m_center), undefined);
|
|
2421
2421
|
|
|
2422
2422
|
if (arg.interactor !== null) {
|
|
2423
2423
|
this.interactor(arg.interactor || mapInteractor({discreteZoom: m_discreteZoom}));
|
package/src/mapInteractor.js
CHANGED
|
@@ -175,8 +175,7 @@ var mapInteractor = function (args) {
|
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
// copy the options object with defaults
|
|
178
|
-
m_options =
|
|
179
|
-
true,
|
|
178
|
+
m_options = util.deepMerge(
|
|
180
179
|
{},
|
|
181
180
|
{
|
|
182
181
|
throttle: 30,
|
|
@@ -390,13 +389,13 @@ var mapInteractor = function (args) {
|
|
|
390
389
|
/* We don't want to merge the original arrays with arrays passed in the args,
|
|
391
390
|
* so override that as necessary for actions. */
|
|
392
391
|
if (args && args.actions) {
|
|
393
|
-
m_options.actions =
|
|
392
|
+
m_options.actions = util.deepMerge([], args.actions);
|
|
394
393
|
}
|
|
395
394
|
if (args && args.momentum && args.momentum.actions) {
|
|
396
|
-
m_options.momentum.actions =
|
|
395
|
+
m_options.momentum.actions = util.deepMerge([], args.momentum.actions);
|
|
397
396
|
}
|
|
398
397
|
if (args && args.keyboard && args.keyboard.actions !== undefined) {
|
|
399
|
-
m_options.keyboard.actions =
|
|
398
|
+
m_options.keyboard.actions = util.deepMerge({}, args.keyboard.actions);
|
|
400
399
|
}
|
|
401
400
|
|
|
402
401
|
// default mouse object
|
|
@@ -882,9 +881,9 @@ var mapInteractor = function (args) {
|
|
|
882
881
|
*/
|
|
883
882
|
this.options = function (opts) {
|
|
884
883
|
if (opts === undefined) {
|
|
885
|
-
return
|
|
884
|
+
return Object.assign({}, m_options);
|
|
886
885
|
}
|
|
887
|
-
|
|
886
|
+
Object.assign(m_options, opts);
|
|
888
887
|
|
|
889
888
|
// reset event handlers for new options
|
|
890
889
|
m_this._connectEvents();
|
|
@@ -1039,7 +1038,7 @@ var mapInteractor = function (args) {
|
|
|
1039
1038
|
display: display,
|
|
1040
1039
|
gcs: gcs,
|
|
1041
1040
|
mouse: mouse,
|
|
1042
|
-
origin:
|
|
1041
|
+
origin: Object.assign({}, m_state.origin)
|
|
1043
1042
|
};
|
|
1044
1043
|
};
|
|
1045
1044
|
|
|
@@ -1119,7 +1118,7 @@ var mapInteractor = function (args) {
|
|
|
1119
1118
|
m_this._setClickMaybe({
|
|
1120
1119
|
x: m_mouse.page.x,
|
|
1121
1120
|
y: m_mouse.page.y,
|
|
1122
|
-
buttons:
|
|
1121
|
+
buttons: Object.assign({}, m_mouse.buttons)
|
|
1123
1122
|
});
|
|
1124
1123
|
if (m_options.click.duration > 0) {
|
|
1125
1124
|
m_clickMaybeTimeout = window.setTimeout(function () {
|
|
@@ -1153,7 +1152,7 @@ var mapInteractor = function (args) {
|
|
|
1153
1152
|
m_state = {
|
|
1154
1153
|
action: action,
|
|
1155
1154
|
actionRecord: actionRecord,
|
|
1156
|
-
origin:
|
|
1155
|
+
origin: util.deepMerge({}, m_mouse),
|
|
1157
1156
|
initialZoom: map.zoom(),
|
|
1158
1157
|
initialRotation: map.rotation(),
|
|
1159
1158
|
initialEventRotation: evt.rotation,
|
|
@@ -1686,7 +1685,7 @@ var mapInteractor = function (args) {
|
|
|
1686
1685
|
function accum(dz, org) {
|
|
1687
1686
|
var map = m_this.map(), zoom;
|
|
1688
1687
|
|
|
1689
|
-
origin =
|
|
1688
|
+
origin = util.deepMerge({}, org);
|
|
1690
1689
|
deltaZ += dz;
|
|
1691
1690
|
if (targetZoom === undefined) {
|
|
1692
1691
|
startZoom = targetZoom = map.zoom();
|
|
@@ -2004,7 +2003,7 @@ var mapInteractor = function (args) {
|
|
|
2004
2003
|
* @returns {object} The current mouse state.
|
|
2005
2004
|
*/
|
|
2006
2005
|
this.mouse = function () {
|
|
2007
|
-
return
|
|
2006
|
+
return util.deepMerge({}, m_mouse);
|
|
2008
2007
|
};
|
|
2009
2008
|
|
|
2010
2009
|
/**
|
|
@@ -2017,7 +2016,7 @@ var mapInteractor = function (args) {
|
|
|
2017
2016
|
*/
|
|
2018
2017
|
this.keyboard = function (newValue) {
|
|
2019
2018
|
if (newValue === undefined) {
|
|
2020
|
-
return
|
|
2019
|
+
return util.deepMerge({}, m_options.keyboard || {});
|
|
2021
2020
|
}
|
|
2022
2021
|
return m_this.options({keyboard: newValue});
|
|
2023
2022
|
};
|
|
@@ -2028,7 +2027,7 @@ var mapInteractor = function (args) {
|
|
|
2028
2027
|
* @returns {geo.interactorState}
|
|
2029
2028
|
*/
|
|
2030
2029
|
this.state = function () {
|
|
2031
|
-
return
|
|
2030
|
+
return util.deepMerge({}, m_state);
|
|
2032
2031
|
};
|
|
2033
2032
|
|
|
2034
2033
|
/**
|
package/src/markerFeature.js
CHANGED
|
@@ -74,7 +74,6 @@ var markerFeature = function (arg) {
|
|
|
74
74
|
arg = arg || {};
|
|
75
75
|
pointFeature.call(this, arg);
|
|
76
76
|
|
|
77
|
-
var $ = require('jquery');
|
|
78
77
|
var timestamp = require('./timestamp');
|
|
79
78
|
var util = require('./util');
|
|
80
79
|
var KDBush = require('kdbush');
|
|
@@ -404,11 +403,10 @@ var markerFeature = function (arg) {
|
|
|
404
403
|
* @returns {this}
|
|
405
404
|
*/
|
|
406
405
|
this._init = function (arg) {
|
|
407
|
-
arg =
|
|
408
|
-
true,
|
|
406
|
+
arg = util.deepMerge(
|
|
409
407
|
{},
|
|
410
408
|
{
|
|
411
|
-
style:
|
|
409
|
+
style: Object.assign(
|
|
412
410
|
{},
|
|
413
411
|
{
|
|
414
412
|
radius: 6.25,
|
package/src/meshFeature.js
CHANGED
|
@@ -112,7 +112,6 @@ var meshFeature = function (arg) {
|
|
|
112
112
|
return new meshFeature(arg);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
var $ = require('jquery');
|
|
116
115
|
var util = require('./util');
|
|
117
116
|
|
|
118
117
|
arg = arg || {};
|
|
@@ -145,7 +144,7 @@ var meshFeature = function (arg) {
|
|
|
145
144
|
return m_mesh[specOrProperty];
|
|
146
145
|
}
|
|
147
146
|
if (value === undefined) {
|
|
148
|
-
var mesh =
|
|
147
|
+
var mesh = Object.assign(
|
|
149
148
|
{},
|
|
150
149
|
{
|
|
151
150
|
gridWidth: function () {
|
|
@@ -552,7 +551,7 @@ var meshFeature = function (arg) {
|
|
|
552
551
|
|
|
553
552
|
/* Initialize from arguments */
|
|
554
553
|
arg = arg || {};
|
|
555
|
-
var style =
|
|
554
|
+
var style = Object.assign({}, {
|
|
556
555
|
position: (d) => Array.isArray(d) ? {x: d[0], y: d[1], z: d[2] || 0} : d
|
|
557
556
|
}, arg.style || {});
|
|
558
557
|
|
package/src/osmLayer.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var $ = require('jquery');
|
|
2
1
|
var inherit = require('./inherit');
|
|
3
2
|
var tileLayer = require('./tileLayer');
|
|
4
3
|
var registry = require('./registry');
|
|
5
4
|
var quadFeature = require('./quadFeature');
|
|
5
|
+
var util = require('./util');
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Object specification for an OSM layer.
|
|
@@ -37,11 +37,10 @@ var osmLayer = function (arg) {
|
|
|
37
37
|
}
|
|
38
38
|
arg = arg || {};
|
|
39
39
|
if (arg.mapOpacity !== undefined && arg.opacity === undefined) {
|
|
40
|
-
arg =
|
|
40
|
+
arg = Object.assign({}, arg);
|
|
41
41
|
arg.opacity = arg.mapOpacity;
|
|
42
42
|
}
|
|
43
|
-
arg =
|
|
44
|
-
true,
|
|
43
|
+
arg = util.deepMerge(
|
|
45
44
|
{},
|
|
46
45
|
this.constructor.defaults,
|
|
47
46
|
osmLayer.tileSources[this.constructor.defaults.source] || {},
|
|
@@ -118,7 +117,7 @@ var osmLayer = function (arg) {
|
|
|
118
117
|
/**
|
|
119
118
|
* This object contains the default options used to initialize the osmLayer.
|
|
120
119
|
*/
|
|
121
|
-
osmLayer.defaults =
|
|
120
|
+
osmLayer.defaults = Object.assign({}, tileLayer.defaults, {
|
|
122
121
|
tileOffset : function (level) {
|
|
123
122
|
var s = Math.pow(2, level - 1) * 256;
|
|
124
123
|
return {x: s, y: s};
|
package/src/pathFeature.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
var $ = require('jquery');
|
|
2
1
|
var inherit = require('./inherit');
|
|
3
2
|
var feature = require('./feature');
|
|
4
3
|
|
|
@@ -79,7 +78,7 @@ var pathFeature = function (arg) {
|
|
|
79
78
|
this._init = function (arg) {
|
|
80
79
|
s_init.call(m_this, arg);
|
|
81
80
|
|
|
82
|
-
var defaultStyle =
|
|
81
|
+
var defaultStyle = Object.assign(
|
|
83
82
|
{},
|
|
84
83
|
{
|
|
85
84
|
strokeWidth: 1,
|
package/src/pixelmapFeature.js
CHANGED
package/src/pixelmapLayer.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var $ = require('jquery');
|
|
2
1
|
var inherit = require('./inherit');
|
|
3
2
|
var tileLayer = require('./tileLayer');
|
|
4
3
|
var registry = require('./registry');
|
|
5
4
|
var quadFeature = require('./quadFeature');
|
|
6
5
|
var pixelmapFeature = require('./pixelmapFeature');
|
|
6
|
+
var util = require('./util');
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Object specification for a pixelmap layer.
|
|
@@ -47,8 +47,7 @@ var pixelmapLayer = function (arg) {
|
|
|
47
47
|
argdata = arg.data;
|
|
48
48
|
delete arg.data;
|
|
49
49
|
}
|
|
50
|
-
arg =
|
|
51
|
-
true,
|
|
50
|
+
arg = util.deepMerge(
|
|
52
51
|
{},
|
|
53
52
|
this.constructor.defaults,
|
|
54
53
|
arg);
|
|
@@ -136,7 +135,7 @@ var pixelmapLayer = function (arg) {
|
|
|
136
135
|
* This object contains the default options used to initialize the
|
|
137
136
|
* pixelmapLayer.
|
|
138
137
|
*/
|
|
139
|
-
pixelmapLayer.defaults =
|
|
138
|
+
pixelmapLayer.defaults = Object.assign({}, tileLayer.defaults, {
|
|
140
139
|
features: [quadFeature.capabilities.image, pixelmapFeature.capabilities.lookup],
|
|
141
140
|
tileOffset : function (level) {
|
|
142
141
|
var s = Math.pow(2, level - 1) * 256;
|
package/src/pointFeature.js
CHANGED
|
@@ -76,7 +76,6 @@ var pointFeature = function (arg) {
|
|
|
76
76
|
arg = arg || {};
|
|
77
77
|
feature.call(this, arg);
|
|
78
78
|
|
|
79
|
-
var $ = require('jquery');
|
|
80
79
|
var timestamp = require('./timestamp');
|
|
81
80
|
var ClusterGroup = require('./util/clustering');
|
|
82
81
|
var geo_event = require('./event');
|
|
@@ -150,7 +149,7 @@ var pointFeature = function (arg) {
|
|
|
150
149
|
radiusInGcsAtZoom = Math.pow(Math.pow(offset.y - center.y, 2) + Math.pow(offset.x - center.x, 2), 0.5),
|
|
151
150
|
zoom = map.zoom(),
|
|
152
151
|
radiusInGcsAtZoom0 = radiusInGcsAtZoom * Math.pow(2, zoom);
|
|
153
|
-
opts =
|
|
152
|
+
opts = Object.assign({}, opts, {radius: radiusInGcsAtZoom0});
|
|
154
153
|
m_clusterTree = new ClusterGroup(opts);
|
|
155
154
|
|
|
156
155
|
m_allData.forEach(function (d, i) {
|
|
@@ -497,8 +496,7 @@ var pointFeature = function (arg) {
|
|
|
497
496
|
arg = arg || {};
|
|
498
497
|
s_init.call(m_this, arg);
|
|
499
498
|
|
|
500
|
-
var defaultStyle =
|
|
501
|
-
true,
|
|
499
|
+
var defaultStyle = util.deepMerge(
|
|
502
500
|
{},
|
|
503
501
|
{
|
|
504
502
|
radius: 5.0,
|
package/src/polygonFeature.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
var $ = require('jquery');
|
|
2
1
|
var inherit = require('./inherit');
|
|
3
2
|
var feature = require('./feature');
|
|
4
3
|
var transform = require('./transform');
|
|
@@ -763,7 +762,7 @@ var polygonFeature = function (arg) {
|
|
|
763
762
|
arg = arg || {};
|
|
764
763
|
s_init.call(m_this, arg);
|
|
765
764
|
|
|
766
|
-
var style =
|
|
765
|
+
var style = Object.assign(
|
|
767
766
|
{},
|
|
768
767
|
{
|
|
769
768
|
// default style
|
package/src/quadFeature.js
CHANGED
package/src/registry.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
var $ = require('jquery');
|
|
2
2
|
var geo_action = require('./action');
|
|
3
|
+
var util = require('./util/common');
|
|
3
4
|
|
|
4
5
|
var widgets = {
|
|
5
6
|
dom: {}
|
|
@@ -12,7 +13,7 @@ var featureCapabilities = {};
|
|
|
12
13
|
var fileReaders = {};
|
|
13
14
|
var rendererLayerAdjustments = {};
|
|
14
15
|
var annotations = {};
|
|
15
|
-
var
|
|
16
|
+
var registry = {};
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* Register a new file reader type.
|
|
@@ -22,7 +23,7 @@ var util = {};
|
|
|
22
23
|
* exists, the class creation function is replaced.
|
|
23
24
|
* @param {function} func Class creation function.
|
|
24
25
|
*/
|
|
25
|
-
|
|
26
|
+
registry.registerFileReader = function (name, func) {
|
|
26
27
|
fileReaders[name] = func;
|
|
27
28
|
};
|
|
28
29
|
|
|
@@ -35,7 +36,7 @@ util.registerFileReader = function (name, func) {
|
|
|
35
36
|
* @returns {geo.fileReader|null} The new reader or null if no such name is
|
|
36
37
|
* registered.
|
|
37
38
|
*/
|
|
38
|
-
|
|
39
|
+
registry.createFileReader = function (name, opts) {
|
|
39
40
|
if (fileReaders.hasOwnProperty(name)) {
|
|
40
41
|
return fileReaders[name](opts);
|
|
41
42
|
}
|
|
@@ -50,7 +51,7 @@ util.createFileReader = function (name, opts) {
|
|
|
50
51
|
* exists, the class creation function is replaced.
|
|
51
52
|
* @param {function} func Class creation function.
|
|
52
53
|
*/
|
|
53
|
-
|
|
54
|
+
registry.registerRenderer = function (name, func) {
|
|
54
55
|
renderers[name] = func;
|
|
55
56
|
};
|
|
56
57
|
|
|
@@ -66,7 +67,7 @@ util.registerRenderer = function (name, func) {
|
|
|
66
67
|
* @returns {geo.renderer|null} The new renderer or null if no such name is
|
|
67
68
|
* registered.
|
|
68
69
|
*/
|
|
69
|
-
|
|
70
|
+
registry.createRenderer = function (name, layer, canvas, options) {
|
|
70
71
|
if (renderers.hasOwnProperty(name)) {
|
|
71
72
|
var ren = renderers[name](
|
|
72
73
|
{layer: layer, canvas: canvas, options: options}
|
|
@@ -89,7 +90,7 @@ util.createRenderer = function (name, layer, canvas, options) {
|
|
|
89
90
|
* @returns {string|null|false} The name of the renderer that should be used
|
|
90
91
|
* or false if no valid renderer can be determined.
|
|
91
92
|
*/
|
|
92
|
-
|
|
93
|
+
registry.checkRenderer = function (name, noFallback) {
|
|
93
94
|
if (name === null) {
|
|
94
95
|
return name;
|
|
95
96
|
}
|
|
@@ -101,7 +102,7 @@ util.checkRenderer = function (name, noFallback) {
|
|
|
101
102
|
if (!ren.fallback || noFallback) {
|
|
102
103
|
return false;
|
|
103
104
|
}
|
|
104
|
-
var fallback =
|
|
105
|
+
var fallback = registry.checkRenderer(ren.fallback(), true);
|
|
105
106
|
if (fallback !== false) {
|
|
106
107
|
console.warn(name + ' renderer is unavailable, using ' + fallback +
|
|
107
108
|
' renderer instead');
|
|
@@ -129,13 +130,13 @@ util.checkRenderer = function (name, noFallback) {
|
|
|
129
130
|
* @returns {string|null|false} The name of the renderer that should be used
|
|
130
131
|
* or false if no valid renderer can be determined.
|
|
131
132
|
*/
|
|
132
|
-
|
|
133
|
+
registry.rendererForFeatures = function (featureList) {
|
|
133
134
|
var preferredRenderers = ['webgl', 'canvas', 'svg', 'vtkjs', null];
|
|
134
135
|
|
|
135
136
|
var renderer, ridx, feature, fidx, capability, available;
|
|
136
137
|
for (ridx = 0; ridx < preferredRenderers.length; ridx += 1) {
|
|
137
138
|
renderer = preferredRenderers[ridx];
|
|
138
|
-
if (
|
|
139
|
+
if (registry.checkRenderer(renderer, true) === false) {
|
|
139
140
|
continue;
|
|
140
141
|
}
|
|
141
142
|
if (!featureList) {
|
|
@@ -189,7 +190,7 @@ util.rendererForFeatures = function (featureList) {
|
|
|
189
190
|
* @returns {object} if this feature replaces an existing one, this was the
|
|
190
191
|
* feature that was replaced. In this case, a warning is issued.
|
|
191
192
|
*/
|
|
192
|
-
|
|
193
|
+
registry.registerFeature = function (category, name, func, capabilities) {
|
|
193
194
|
if (!(category in features)) {
|
|
194
195
|
features[category] = {};
|
|
195
196
|
featureCapabilities[category] = {};
|
|
@@ -216,12 +217,12 @@ util.registerFeature = function (category, name, func, capabilities) {
|
|
|
216
217
|
* @returns {geo.feature|null} The new feature or null if no such name is
|
|
217
218
|
* registered.
|
|
218
219
|
*/
|
|
219
|
-
|
|
220
|
+
registry.createFeature = function (name, layer, renderer, arg) {
|
|
220
221
|
var category = renderer.api(),
|
|
221
222
|
options = {layer: layer, renderer: renderer};
|
|
222
223
|
if (category in features && name in features[category]) {
|
|
223
224
|
if (arg !== undefined) {
|
|
224
|
-
|
|
225
|
+
util.deepMerge(options, arg);
|
|
225
226
|
}
|
|
226
227
|
var feature = features[category][name](options);
|
|
227
228
|
if (layer.gcs === undefined) {
|
|
@@ -248,7 +249,7 @@ util.createFeature = function (name, layer, renderer, arg) {
|
|
|
248
249
|
* @returns {object} if this layer adjustment replaces an existing one, this
|
|
249
250
|
* was the value that was replaced. In this case, a warning is issued.
|
|
250
251
|
*/
|
|
251
|
-
|
|
252
|
+
registry.registerLayerAdjustment = function (category, name, func) {
|
|
252
253
|
if (!(category in rendererLayerAdjustments)) {
|
|
253
254
|
rendererLayerAdjustments[category] = {};
|
|
254
255
|
}
|
|
@@ -269,7 +270,7 @@ util.registerLayerAdjustment = function (category, name, func) {
|
|
|
269
270
|
* @param {string} name Name of the layer or adjustment.
|
|
270
271
|
* @param {object} layer Instantiated layer object.
|
|
271
272
|
*/
|
|
272
|
-
|
|
273
|
+
registry.adjustLayerForRenderer = function (name, layer) {
|
|
273
274
|
var rendererName = layer.rendererName();
|
|
274
275
|
if (rendererName) {
|
|
275
276
|
if (rendererLayerAdjustments &&
|
|
@@ -290,7 +291,7 @@ util.adjustLayerForRenderer = function (name, layer) {
|
|
|
290
291
|
* @param {string[]} [defaultFeatures] An optional list of feature capabilities
|
|
291
292
|
* that are required to use this layer.
|
|
292
293
|
*/
|
|
293
|
-
|
|
294
|
+
registry.registerLayer = function (name, func, defaultFeatures) {
|
|
294
295
|
layers[name] = func;
|
|
295
296
|
layerDefaultFeatures[name] = defaultFeatures;
|
|
296
297
|
};
|
|
@@ -305,7 +306,7 @@ util.registerLayer = function (name, func, defaultFeatures) {
|
|
|
305
306
|
* @returns {geo.layer|null} The new layer or null if no such name is
|
|
306
307
|
* registered.
|
|
307
308
|
*/
|
|
308
|
-
|
|
309
|
+
registry.createLayer = function (name, map, arg) {
|
|
309
310
|
// Default renderer is webgl
|
|
310
311
|
var options = {map: map},
|
|
311
312
|
layer = null;
|
|
@@ -317,7 +318,7 @@ util.createLayer = function (name, map, arg) {
|
|
|
317
318
|
if (arg !== undefined) {
|
|
318
319
|
const argdata = arg.data;
|
|
319
320
|
delete arg.data;
|
|
320
|
-
|
|
321
|
+
util.deepMerge(options, arg);
|
|
321
322
|
if (argdata) {
|
|
322
323
|
options.data = argdata;
|
|
323
324
|
}
|
|
@@ -342,7 +343,7 @@ util.createLayer = function (name, map, arg) {
|
|
|
342
343
|
* @returns {object} If this widget replaces an existing one, this was the
|
|
343
344
|
* value that was replaced. In this case, a warning is issued.
|
|
344
345
|
*/
|
|
345
|
-
|
|
346
|
+
registry.registerWidget = function (category, name, func) {
|
|
346
347
|
if (!(category in widgets)) {
|
|
347
348
|
widgets[category] = {};
|
|
348
349
|
}
|
|
@@ -364,14 +365,14 @@ util.registerWidget = function (category, name, func) {
|
|
|
364
365
|
* @param {object} arg Options for the new widget.
|
|
365
366
|
* @returns {geo.widget} The new widget.
|
|
366
367
|
*/
|
|
367
|
-
|
|
368
|
+
registry.createWidget = function (name, layer, arg) {
|
|
368
369
|
var options = {
|
|
369
370
|
layer: layer
|
|
370
371
|
};
|
|
371
372
|
|
|
372
373
|
if (name in widgets.dom) {
|
|
373
374
|
if (arg !== undefined) {
|
|
374
|
-
|
|
375
|
+
util.deepMerge(options, arg);
|
|
375
376
|
}
|
|
376
377
|
|
|
377
378
|
return widgets.dom[name](options);
|
|
@@ -394,7 +395,7 @@ util.createWidget = function (name, layer, arg) {
|
|
|
394
395
|
* @returns {object} if this annotation replaces an existing one, this was the
|
|
395
396
|
* value that was replaced. In this case, a warning is issued.
|
|
396
397
|
*/
|
|
397
|
-
|
|
398
|
+
registry.registerAnnotation = function (name, func, features) {
|
|
398
399
|
var old = annotations[name];
|
|
399
400
|
if (old) {
|
|
400
401
|
console.warn('The ' + name + ' annotation is already registered');
|
|
@@ -412,7 +413,7 @@ util.registerAnnotation = function (name, func, features) {
|
|
|
412
413
|
* @param {object} options The options for the annotation.
|
|
413
414
|
* @returns {object} the new annotation.
|
|
414
415
|
*/
|
|
415
|
-
|
|
416
|
+
registry.createAnnotation = function (name, options) {
|
|
416
417
|
if (!annotations[name]) {
|
|
417
418
|
console.warn('The ' + name + ' annotation is not registered');
|
|
418
419
|
return;
|
|
@@ -427,7 +428,7 @@ util.createAnnotation = function (name, options) {
|
|
|
427
428
|
* @alias geo.listAnnotations
|
|
428
429
|
* @returns {string[]} A list of registered annotations.
|
|
429
430
|
*/
|
|
430
|
-
|
|
431
|
+
registry.listAnnotations = function () {
|
|
431
432
|
return Object.keys(annotations);
|
|
432
433
|
};
|
|
433
434
|
|
|
@@ -445,7 +446,7 @@ util.listAnnotations = function () {
|
|
|
445
446
|
* @returns {string[]} a list of features needed for the specified annotations.
|
|
446
447
|
* There may be duplicates in the list.
|
|
447
448
|
*/
|
|
448
|
-
|
|
449
|
+
registry.featuresForAnnotations = function (annotationList) {
|
|
449
450
|
var features = [];
|
|
450
451
|
|
|
451
452
|
var annList = Array.isArray(annotationList) ? annotationList : Object.keys(annotationList);
|
|
@@ -483,8 +484,8 @@ util.featuresForAnnotations = function (annotationList) {
|
|
|
483
484
|
* @returns {string|null|false} the name of the renderer that should be used or
|
|
484
485
|
* false if no valid renderer can be determined.
|
|
485
486
|
*/
|
|
486
|
-
|
|
487
|
-
return
|
|
487
|
+
registry.rendererForAnnotations = function (annotationList) {
|
|
488
|
+
return registry.rendererForFeatures(registry.featuresForAnnotations(annotationList));
|
|
488
489
|
};
|
|
489
490
|
|
|
490
491
|
/**
|
|
@@ -493,7 +494,7 @@ util.rendererForAnnotations = function (annotationList) {
|
|
|
493
494
|
*
|
|
494
495
|
* @namespace geo.registries
|
|
495
496
|
*/
|
|
496
|
-
|
|
497
|
+
registry.registries = {
|
|
497
498
|
annotations: annotations,
|
|
498
499
|
features: features,
|
|
499
500
|
featureCapabilities: featureCapabilities,
|
|
@@ -503,4 +504,4 @@ util.registries = {
|
|
|
503
504
|
widgets: widgets
|
|
504
505
|
};
|
|
505
506
|
|
|
506
|
-
module.exports =
|
|
507
|
+
module.exports = registry;
|
package/src/svg/pathFeature.js
CHANGED
|
@@ -18,7 +18,6 @@ var svg_pathFeature = function (arg) {
|
|
|
18
18
|
return new svg_pathFeature(arg);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
var $ = require('jquery');
|
|
22
21
|
var object = require('./object');
|
|
23
22
|
var timestamp = require('../timestamp');
|
|
24
23
|
|
|
@@ -73,7 +72,7 @@ var svg_pathFeature = function (arg) {
|
|
|
73
72
|
m_style.id = m_this._svgid();
|
|
74
73
|
m_style.append = 'path';
|
|
75
74
|
m_style.classes = ['svgPathFeature'];
|
|
76
|
-
m_style.style =
|
|
75
|
+
m_style.style = Object.assign({
|
|
77
76
|
fill: function () { return false; },
|
|
78
77
|
fillColor: {r: 0, g: 0, b: 0}
|
|
79
78
|
}, s_style);
|
package/src/textFeature.js
CHANGED
|
@@ -94,8 +94,6 @@ var textFeature = function (arg) {
|
|
|
94
94
|
arg = arg || {};
|
|
95
95
|
feature.call(this, arg);
|
|
96
96
|
|
|
97
|
-
var $ = require('jquery');
|
|
98
|
-
|
|
99
97
|
/**
|
|
100
98
|
* @private
|
|
101
99
|
*/
|
|
@@ -149,7 +147,7 @@ var textFeature = function (arg) {
|
|
|
149
147
|
arg = arg || {};
|
|
150
148
|
s_init.call(m_this, arg);
|
|
151
149
|
|
|
152
|
-
var style =
|
|
150
|
+
var style = Object.assign(
|
|
153
151
|
{},
|
|
154
152
|
{
|
|
155
153
|
font: 'bold 16px sans-serif',
|