123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- define("dojox/geo/charting/widget/Map", ["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare","dojo/_base/html","dojo/dom-geometry",
- "dijit/_Widget","dojox/geo/charting/Map"],
- function(dojo, lang, declare, html,domGeom, Widget, Map) {
- return declare("dojox.geo.charting.widget.Map", Widget, {
- // summary:
- // A map viewer widget based on the dojox.geo.charting.Map component
- //
- // description:
- // The `dojox.geo.charting.widget.Map` widget combines map display together with charting capabilities.
- // It encapsulates an `dojox.geo.charting.Map` object on which most operations are delegated.
- // Parameters can be passed as argument at construction time to specify map data file (json shape format)
- // as well as charting data.
- //
- // The parameters are :
- //
- // * `shapeData`: The json object containing map data or the name of the file containing map data.
- // * `dataStore`: the dataStore to fetch the charting data from
- // * `dataBindingAttribute`: property name of the dataStore items to use as value for charting
- // * `markerData`: tooltips to display for map features, handled as json style.
- // * `adjustMapCenterOnResize`: if true, the center of the map remains the same when resizing the widget
- // * `adjustMapScaleOnResize`: if true, the map scale is adjusted to leave the visible portion of the map identical as much as possible
- //
- // example:
- //
- // | var map = new dojox.geo.charting.widget.Map({
- // | shapeData : 'map.json',
- // | adjustMapCenterOnresize : true,
- // | adjustMapScaleOnresize : true,
- // | });
- shapeData : "",
- dataStore : null,
- dataBindingAttribute : "",
- dataBindingValueFunction: null,
- markerData : "",
- series : "",
- adjustMapCenterOnResize: null,
- adjustMapScaleOnResize: null,
- animateOnResize: null,
- onFeatureClick: null,
- onFeatureOver: null,
- enableMouseSupport: null,
- enableTouchSupport: null,
- enableMouseZoom: null,
- enableMousePan: null,
- enableKeyboardSupport: false,
- showTooltips: false,
- enableFeatureZoom: null,
- colorAnimationDuration: 0,
- mouseClickThreshold: 2,
- _mouseInteractionSupport:null,
- _touchInteractionSupport:null,
- _keyboardInteractionSupport:null,
- constructor : function(/* Object */options, /* HtmlNode */div){
- // summary:
- // Constructs a new Map widget
- this.map = null;
- },
- startup : function(){
- this.inherited(arguments);
- if (this.map) {
- this.map.fitToMapContents();
- }
-
- },
- postMixInProperties : function(){
- this.inherited(arguments);
- },
- create : function(/*Object?*/params, /*DomNode|String?*/srcNodeRef){
- this.inherited(arguments);
- },
-
- getInnerMap: function() {
- return this.map;
- },
-
- buildRendering : function(){
- // summary:
- // Construct the UI for this widget, creates the underlying real dojox.geo.charting.Map object.
- // tags:
- // protected
- this.inherited(arguments);
- if (this.shapeData) {
- this.map = new Map(this.domNode, this.shapeData);
- if (this.markerData && (this.markerData.length > 0))
- this.map.setMarkerData(this.markerData);
-
- if (this.dataStore) {
- if (this.dataBindingValueFunction) {
- this.map.setDataBindingValueFunction(this.dataBindingValueFunction);
- }
- this.map.setDataStore(this.dataStore,this.dataBindingAttribute);
- }
-
- if (this.series && (this.series.length > 0)) {
- this.map.addSeries(this.series);
- }
-
- if (this.onFeatureClick) {
- this.map.onFeatureClick = this.onFeatureClick;
- }
- if (this.onFeatureOver) {
- this.map.onFeatureOver = this.onFeatureOver;
- }
- if (this.enableMouseSupport) {
-
- if (!dojox.geo.charting.MouseInteractionSupport) {
- throw Error("Can't find dojox.geo.charting.MouseInteractionSupport. Didn't you forget to dojo" + ".require() it?");
- }
- var options = {};
- options.enablePan = this.enableMousePan;
- options.enableZoom = this.enableMouseZoom;
- options.mouseClickThreshold = this.mouseClickThreshold;
- this._mouseInteractionSupport = new dojox.geo.charting.MouseInteractionSupport(this.map,options);
- this._mouseInteractionSupport.connect();
- }
-
- if (this.enableTouchSupport) {
- if (!dojox.geo.charting.TouchInteractionSupport) {
- throw Error("Can't find dojox.geo.charting.TouchInteractionSupport. Didn't you forget to dojo" + ".require() it?");
- }
- this._touchInteractionSupport = new dojox.geo.charting.TouchInteractionSupport(this.map,{});
- this._touchInteractionSupport.connect();
- }
- if (this.enableKeyboardSupport) {
- if (!dojox.geo.charting.KeyboardInteractionSupport) {
- throw Error("Can't find dojox.geo.charting.KeyboardInteractionSupport. Didn't you forget to dojo" + ".require() it?");
- }
- this._keyboardInteractionSupport = new dojox.geo.charting.KeyboardInteractionSupport(this.map,{});
- this._keyboardInteractionSupport.connect();
- }
- this.map.showTooltips = this.showTooltips;
- this.map.enableFeatureZoom = this.enableFeatureZoom;
- this.map.colorAnimationDuration = this.colorAnimationDuration;
-
-
- }
- },
-
- resize : function(b){
- // summary:
- // Resize the widget.
- // description:
- // Resize the domNode and the widget to the dimensions of a box of the following form:
- // `{ l: 50, t: 200, w: 300: h: 150 }`
- // box:
- // If passed, denotes the new size of the widget.
- var box;
- switch (arguments.length) {
- case 0:
- // case 0, do not resize the div, just the surface
- break;
- case 1:
- // argument, override node box
- box = lang.mixin({}, b);
- domGeom.getMarginBox(this.domNode, box);
- break;
- case 2:
- // two argument, width, height
- box = {
- w : arguments[0],
- h : arguments[1]
- };
- domGeom.getMarginBox(this.domNode, box);
- break;
- }
-
- if (this.map) {
- this.map.resize(this.adjustMapCenterOnResize,this.adjustMapScaleOnResize,this.animateOnResize);
- }
- }
- });
- });
|