First check in of map of science visualization
This commit is contained in:
parent
c365f9a39a
commit
e6ea91b8be
232 changed files with 1853 additions and 0 deletions
103
productMods/js/visualization/mapofscience/MarkerManager.js
Normal file
103
productMods/js/visualization/mapofscience/MarkerManager.js
Normal file
|
@ -0,0 +1,103 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
/**
|
||||
* The MarkerManager is more like a composite class of Marker. It manages
|
||||
* markers by grouping the markers by keys.
|
||||
*/
|
||||
var MarkerManager = Class.extend({
|
||||
init: function(colorStrategy, sizeCoder) {
|
||||
this.keyToMarker = {};
|
||||
this.colorStrategy = colorStrategy;
|
||||
this.sizeCoder = sizeCoder;
|
||||
},
|
||||
addMarker: function(key, marker) {
|
||||
this.keyToMarker[key] = marker;
|
||||
},
|
||||
getMarker: function(key) {
|
||||
return this.keyToMarker[key];
|
||||
},
|
||||
hasKey: function(key) {
|
||||
return (this.keyToMarker.hasOwnProperty(key));
|
||||
},
|
||||
showMarkers: function() {
|
||||
$.each(this.keyToMarker, function(i, marker) {
|
||||
marker.show();
|
||||
});
|
||||
},
|
||||
hideMarkers: function() {
|
||||
$.each(this.keyToMarker, function(i, marker) {
|
||||
marker.hide();
|
||||
});
|
||||
},
|
||||
addMarkersToMap: function() {
|
||||
console.log(this.keyToMarker);
|
||||
$.each(this.keyToMarker, function(i, marker) {
|
||||
marker.addToMap();
|
||||
});
|
||||
},
|
||||
removeMarkersFromMap: function() {
|
||||
$.each(this.keyToMarker, function(i, marker) {
|
||||
marker.removeFromMap();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Customized MarkerManager for Science map purpose. It is be an abstract class
|
||||
*/
|
||||
ScimapMarkerManager = MarkerManager.extend({
|
||||
init: function(map, colorStrategy, sizeCoder) {
|
||||
this._super();
|
||||
this.colorStrategy = colorStrategy;
|
||||
this.sizeCoder = sizeCoder;
|
||||
this.map = map;
|
||||
this.layer = {};
|
||||
},
|
||||
setSizeCoder: function(sizeCoder) {
|
||||
this.sizeCoder = sizeCoder;
|
||||
},
|
||||
createMarker: function(key, density) {
|
||||
var me = this;
|
||||
var marker;
|
||||
if (!me.hasKey(key)) {
|
||||
var size = me.sizeCoder.getSize(density);
|
||||
var color = me.colorStrategy.getColor(key);
|
||||
var layer = me.layer;
|
||||
var label = layer[key].label;
|
||||
var latlng = createNoWrapLatLng(layer[key].latitude, layer[key].longitude);
|
||||
marker = createScinodeMarker(me.map, label, density, size, color, latlng);
|
||||
me.addMarker(key, marker);
|
||||
} else {
|
||||
marker = me.keyToMarker[key];
|
||||
marker.setValue(marker.getValue() + density);
|
||||
marker.setSize(me.sizeCoder.getSize(marker.getValue()));
|
||||
}
|
||||
return marker;
|
||||
},
|
||||
updateMarkerViews: function() {
|
||||
var me = this;
|
||||
for (var key in me.keyToMarker) {
|
||||
var marker = me.keyToMarker[key];
|
||||
marker.setSize(me.sizeCodingFunc(marker.getValue()));
|
||||
marker.setColor(me.colorStrategy.getColor(key));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var DisciplineMarkerManager = ScimapMarkerManager.extend({
|
||||
init: function(map, colorStrategy, sizeCoder) {
|
||||
this._super(map, colorStrategy, sizeCoder);
|
||||
this.layer = DISCIPLINES;
|
||||
},
|
||||
createMarker: function(subdisciplineKey, density) {
|
||||
var me = this;
|
||||
var key = SUBDISCIPLINES[subdisciplineKey].discipline;
|
||||
return this._super(key, density);
|
||||
}
|
||||
});
|
||||
|
||||
var SubdisciplineMarkerManager = ScimapMarkerManager.extend({
|
||||
init: function(map, colorStrategy, sizeCoder) {
|
||||
this._super(map, colorStrategy, sizeCoder);
|
||||
this.layer = SUBDISCIPLINES;
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue