FileMaster
Search
Toggle Dark Mode
Home
/
.
/
backup
/
adm
/
vendor
/
dotted-map
/
js
Edit File: smallimap.js
// Generated by CoffeeScript 1.4.0 /*! Smallimap Copyright (c) 2012 Small Improvements (http://www.small-improvements.com) Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. @author Sebastian Helzle (sebastian@small-improvements.com) @author Tim Taubner (tim@small-improvements.com) */ var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; (function($) { var BlipEvent, ColorEffect, DelayEffect, Effect, Event, GeoAreaEvent, GeoEvent, LensEvent, MapDot, MapIcon, RadiusEffect, Smallimap, easing; $.si || ($.si = {}); $.si.smallimap = { version: '0.2.0', defaults: { dotRadius: 4, fps: 20, width: 1000, height: 500, showNight: true, colors: { lights: ["#fdf6e3", "#fafafa", "#dddddd", "#cccccc", "#bbbbbb"], darks: ["#444444", "#666666", "#888888", "#aaaaaa"], land: { day: function(smallimap) { return smallimap.colors.lights.slice(1).concat(smallimap.colors.darks.slice(1).reverse()); }, night: function(smallimap) { return smallimap.colors.land.day().reverse(); } } } } }; Smallimap = (function() { function Smallimap(obj, cwidth, cheight, renderContext, world, options) { this.obj = obj; this.renderContext = renderContext; this.world = world; if (options == null) { options = {}; } this.addMapIcon = __bind(this.addMapIcon, this); this.enqueueEvent = __bind(this.enqueueEvent, this); this.triggerOverlay = __bind(this.triggerOverlay, this); this.reset = __bind(this.reset, this); this.markDirty = __bind(this.markDirty, this); this.render = __bind(this.render, this); this.landinessOf = __bind(this.landinessOf, this); this.convertToWorldY = __bind(this.convertToWorldY, this); this.convertToWorldX = __bind(this.convertToWorldX, this); this.radiusFor = __bind(this.radiusFor, this); this.colorFor = __bind(this.colorFor, this); this.generateGrid = __bind(this.generateGrid, this); this.refresh = __bind(this.refresh, this); this.run = __bind(this.run, this); $.extend(true, this, options); this.dotDiameter = this.dotRadius * 2; this.width = cwidth / this.dotDiameter; this.height = cheight / this.dotDiameter; this.lastX = -1; this.lastY = -1; this.dirtyXs = void 0; this.eventQueue = []; this.lastRefresh = 0; this.mapIcons = []; this.grid = this.generateGrid(this.width, this.height); } Smallimap.prototype.run = function() { return this.refresh(); }; Smallimap.prototype.refresh = function() { var dt, event, now, ongoingEvents, x, y, _i, _j, _k, _l, _len, _ref, _ref1, _ref2, _ref3; now = new Date().getTime(); dt = now - this.lastRefresh; this.lastRefresh = now; ongoingEvents = []; _ref = this.eventQueue; for (_i = 0, _len = _ref.length; _i < _len; _i++) { event = _ref[_i]; if (event.refresh(dt)) { ongoingEvents.push(event); } } this.eventQueue = ongoingEvents; if (!this.dirtyXs) { this.dirtyXs = []; for (x = _j = 0, _ref1 = this.width - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; x = 0 <= _ref1 ? ++_j : --_j) { this.dirtyXs[x] = true; } } for (x = _k = 0, _ref2 = this.width - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; x = 0 <= _ref2 ? ++_k : --_k) { if (this.dirtyXs[x]) { this.dirtyXs[x] = false; for (y = _l = 0, _ref3 = this.height - 1; 0 <= _ref3 ? _l <= _ref3 : _l >= _ref3; y = 0 <= _ref3 ? ++_l : --_l) { if (this.grid[x][y].dirty) { this.render(x, y); } } } } return requestAnimationFrame(this.refresh); }; Smallimap.prototype.generateGrid = function(width, height) { var grid, x, y, _i, _j, _ref, _ref1; grid = []; for (x = _i = 0, _ref = width - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; x = 0 <= _ref ? ++_i : --_i) { for (y = _j = 0, _ref1 = height - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; y = 0 <= _ref1 ? ++_j : --_j) { grid[x] || (grid[x] = []); grid[x][y] = new MapDot(this, x, y, this.landinessOf(x, y)); } } return grid; }; Smallimap.prototype.longToX = function(longitude) { return Math.floor((longitude + 180) * this.width / 360 + 0.5); }; Smallimap.prototype.latToY = function(latitude) { return Math.floor((-latitude + 90) * this.height / 180 + 0.5); }; Smallimap.prototype.xToLong = function(x) { return Math.floor(x * 360 / this.width - 180 + 0.5); }; Smallimap.prototype.yToLat = function(y) { return -Math.floor(y * 180 / this.height - 90 + 0.5); }; Smallimap.prototype.colorFor = function(longitude, latitude, landiness) { var darkness, idx, landColors, now, sunSet; darkness = landiness * landiness; now = new Date(); sunSet = new SunriseSunset(now.getYear(), now.getMonth() + 1, now.getDate(), latitude, longitude); landColors = this.colors.land.day(this); idx = Math.floor(darkness * (landColors.length - 2)); if (sunSet.isDaylight(now.getHours()) || !this.showNight) { return new Color(landColors[idx]); } else { return new Color(landColors[idx + 1]); } }; Smallimap.prototype.radiusFor = function(longitude, latitude, landiness) { var now, sunSet; now = new Date(); sunSet = new SunriseSunset(now.getYear(), now.getMonth() + 1, now.getDate(), latitude, longitude); if (sunSet.isDaylight(now.getHours()) || !this.showNight) { return this.dotRadius * Math.max(0.2, landiness) * 0.6; } else { return this.dotRadius * Math.max(0.25, landiness) * 0.78; } }; Smallimap.prototype.convertToWorldX = function(x) { return Math.floor(x * this.world.length / this.width); }; Smallimap.prototype.convertToWorldY = function(y) { return Math.floor(y * this.world[0].length / this.height); }; Smallimap.prototype.landinessOf = function(x, y) { var existsCount, i, j, totalCount, worldXEnd, worldXStart, worldYEnd, worldYStart, _i, _j; worldXStart = this.convertToWorldX(x); worldXEnd = this.convertToWorldX(x + 1) - 1; worldYStart = this.convertToWorldY(y); worldYEnd = this.convertToWorldY(y + 1) - 1; totalCount = 0; existsCount = 0; for (i = _i = worldXStart; worldXStart <= worldXEnd ? _i <= worldXEnd : _i >= worldXEnd; i = worldXStart <= worldXEnd ? ++_i : --_i) { for (j = _j = worldYStart; worldYStart <= worldYEnd ? _j <= worldYEnd : _j >= worldYEnd; j = worldYStart <= worldYEnd ? ++_j : --_j) { totalCount += 1; if (this.world[i] && this.world[i][j]) { existsCount += 1; } } } return existsCount / totalCount; }; Smallimap.prototype.render = function(x, y, millis) { var color, dot, radius; dot = this.grid[x][y]; color = dot.target.color || dot.initial.color; radius = dot.target.radius || dot.initial.radius; this.renderContext.clearRect(x * this.dotDiameter, y * this.dotDiameter, this.dotDiameter, this.dotDiameter); this.renderContext.fillStyle = color.rgbString(); this.renderContext.beginPath(); this.renderContext.arc(x * this.dotDiameter + this.dotRadius, y * this.dotDiameter + this.dotRadius, radius, 0, Math.PI * 2, true); this.renderContext.closePath(); this.renderContext.fill(); dot.dirty = false; return dot.target = {}; }; Smallimap.prototype.markDirty = function(x, y) { if (this.dirtyXs) { this.dirtyXs[x] = true; } return this.grid[x][y].dirty = true; }; Smallimap.prototype.reset = function(x, y) { return this.markDirty(x, y); }; Smallimap.prototype.triggerOverlay = function() { var push, y, _i, _ref, _results, _this = this; y = 0; push = function(x, dt) { var dot, r, setDots; dot = _this.grid[x][0]; r = dot.initial.radius; setDots = function(r) { var _i, _ref, _results; _results = []; for (y = _i = 0, _ref = _this.height - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; y = 0 <= _ref ? ++_i : --_i) { _results.push(_this.grid[x][y].setRadius(r)); } return _results; }; return _this.eventQueue.push(function() { setDots(r + dt); return setTimeout(function() { setDots(r); return _this.eventQueue.push(function() { return push((x + 1) % _this.width, dt); }); }, 1000 / _this.width * 8); }); }; _results = []; for (y = _i = 0, _ref = this.height - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; y = 0 <= _ref ? ++_i : --_i) { _results.push(push(0, 0.5)); } return _results; }; Smallimap.prototype.enqueueEvent = function(event) { event.init(); return this.eventQueue.push(event); }; Smallimap.prototype.addMapIcon = function(title, label, iconMarker, iconUrl, longitude, latitude, bedroom, bathroom, message, contactURL, classname) { var mapX, mapY; longitude = parseFloat(longitude); latitude = parseFloat(latitude); mapX = this.longToX(longitude) * this.dotDiameter + this.dotRadius; mapY = this.latToY(latitude) * this.dotDiameter + this.dotRadius; return this.mapIcons.push(new MapIcon(this.obj, title, label, iconMarker, iconUrl, mapX, mapY, bedroom, bathroom, message, contactURL, classname)); }; return Smallimap; })(); Effect = (function() { function Effect(dot, duration, options) { this.dot = dot; this.duration = duration; this.refresh = __bind(this.refresh, this); this.update = __bind(this.update, this); this.timeElapsed = 0; this.easing = options.easing || easing.linear; this.callback = options.callback; } Effect.prototype.update = function(dt) { this.timeElapsed += dt; this.refresh(this.easing(Math.min(1, this.timeElapsed / this.duration))); if (this.timeElapsed > this.duration) { if (typeof this.callback === "function") { this.callback(); } return false; } else { return true; } }; Effect.prototype.refresh = function(progress) { return "unimplemented"; }; return Effect; })(); RadiusEffect = (function(_super) { __extends(RadiusEffect, _super); function RadiusEffect(dot, duration, options) { this.refresh = __bind(this.refresh, this); RadiusEffect.__super__.constructor.call(this, dot, duration, options); this.startRadius = options.startRadius; this.endRadius = options.endRadius; } RadiusEffect.prototype.refresh = function(progress) { return this.dot.setRadius(this.endRadius * progress + this.startRadius * (1 - progress)); }; return RadiusEffect; })(Effect); ColorEffect = (function(_super) { __extends(ColorEffect, _super); function ColorEffect(dot, duration, options) { this.refresh = __bind(this.refresh, this); ColorEffect.__super__.constructor.call(this, dot, duration, options); this.startColor = options.startColor; this.endColor = options.endColor; } ColorEffect.prototype.refresh = function(progress) { var start; start = new Color(this.startColor.rgbString()); return this.dot.setColor(start.mix(this.endColor, progress)); }; return ColorEffect; })(Effect); DelayEffect = (function(_super) { __extends(DelayEffect, _super); function DelayEffect(dot, duration, options) { this.refresh = __bind(this.refresh, this); DelayEffect.__super__.constructor.call(this, dot, duration, options); } DelayEffect.prototype.refresh = function(progress) { return "nothing to do"; }; return DelayEffect; })(Effect); Event = (function() { function Event(smallimap, options) { this.smallimap = smallimap; this.refresh = __bind(this.refresh, this); this.init = __bind(this.init, this); this.enqueue = __bind(this.enqueue, this); this.callback = options.callback; this.queue = []; } Event.prototype.enqueue = function(effect) { return this.queue.push(effect); }; Event.prototype.init = function() { return "no init, dude"; }; Event.prototype.refresh = function(dt) { var currentEffects, effect, _i, _len; currentEffects = this.queue.splice(0); this.queue = []; for (_i = 0, _len = currentEffects.length; _i < _len; _i++) { effect = currentEffects[_i]; if (effect.update(dt)) { this.queue.push(effect); } } return this.queue.length > 0; }; return Event; })(); GeoEvent = (function(_super) { __extends(GeoEvent, _super); function GeoEvent(smallimap, options) { GeoEvent.__super__.constructor.call(this, smallimap, options); this.latitude = parseFloat(options.latitude); this.longitude = parseFloat(options.longitude); this.x = this.smallimap.longToX(this.longitude); this.y = this.smallimap.latToY(this.latitude); } return GeoEvent; })(Event); GeoAreaEvent = (function(_super) { __extends(GeoAreaEvent, _super); function GeoAreaEvent(smallimap, options) { this.init = __bind(this.init, this); GeoAreaEvent.__super__.constructor.call(this, smallimap, options); this.eventRadius = options.eventRadius || 8; } GeoAreaEvent.prototype.init = function() { var d, dot, i, j, nx, ny, _i, _ref, _ref1, _results; _results = []; for (i = _i = _ref = -this.eventRadius, _ref1 = this.eventRadius; _ref <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = _ref <= _ref1 ? ++_i : --_i) { _results.push((function() { var _j, _ref2, _ref3, _results1; _results1 = []; for (j = _j = _ref2 = -this.eventRadius, _ref3 = this.eventRadius; _ref2 <= _ref3 ? _j <= _ref3 : _j >= _ref3; j = _ref2 <= _ref3 ? ++_j : --_j) { nx = this.x + i; ny = this.y + j; d = Math.sqrt(i * i + j * j); if (d < this.eventRadius + 0.5 && this.smallimap.grid[nx] && this.smallimap.grid[nx][ny]) { dot = this.smallimap.grid[nx][ny]; _results1.push(this.initEventsForDot(nx, ny, d, dot)); } else { _results1.push(void 0); } } return _results1; }).call(this)); } return _results; }; return GeoAreaEvent; })(GeoEvent); BlipEvent = (function(_super) { __extends(BlipEvent, _super); function BlipEvent(smallimap, options) { this.initEventsForDot = __bind(this.initEventsForDot, this); BlipEvent.__super__.constructor.call(this, smallimap, options); this.color = new Color(options.color || "#336699"); this.duration = options.duration || 2048; this.weight = options.weight || 0.5; } BlipEvent.prototype.initEventsForDot = function(nx, ny, d, dot) { var delay, endColor, endRadius, fadeInDuration, fadeOutDuration, ratio, startColor, startRadius, _this = this; ratio = Math.sqrt(d / this.eventRadius * this.weight); delay = this.duration / 9 * ratio; fadeInDuration = this.duration / 9 * (1 - ratio); fadeOutDuration = this.duration * 8 / 9 * (1 - ratio); startColor = dot.initial.color; endColor = new Color(this.color.rgbString()).mix(startColor, ratio * ratio); startRadius = dot.initial.radius; if (startRadius >= this.smallimap.dotRadius * 0.5) { endRadius = startRadius - startRadius * 0.5 * (1 - ratio); } else { endRadius = (this.smallimap.dotRadius - startRadius) * (1 - ratio) + startRadius; } if (fadeInDuration > 0) { return this.enqueue(new DelayEffect(dot, delay, { callback: function() { _this.enqueue(new ColorEffect(dot, fadeInDuration, { startColor: startColor, endColor: endColor, easing: easing.quadratic, callback: function() { return _this.enqueue(new ColorEffect(dot, fadeOutDuration, { startColor: endColor, endColor: startColor, easing: Math.sqrt })); } })); return _this.enqueue(new RadiusEffect(dot, fadeInDuration, { startRadius: startRadius, endRadius: endRadius, easing: easing.linear, callback: function() { return _this.enqueue(new RadiusEffect(dot, fadeOutDuration, { startRadius: endRadius, endRadius: startRadius, easing: Math.quadratic })); } })); } })); } }; return BlipEvent; })(GeoAreaEvent); LensEvent = (function(_super) { __extends(LensEvent, _super); function LensEvent(smallimap, options) { this.init = __bind(this.init, this); LensEvent.__super__.constructor.call(this, smallimap, options); this.delay = options.delay || 0; this.duration = options.duration || 1024; this.weight = options.weight || 1; this.isOut = options.fade === "out"; } LensEvent.prototype.init = function() { var dot, duration, endRadius, startRadius, _this = this; dot = this.smallimap.grid[this.x][this.y]; duration = this.duration; startRadius = dot.initial.radius; endRadius = (this.smallimap.dotRadius - startRadius) * this.weight + startRadius; if (this.isOut) { startRadius = endRadius; endRadius = dot.initial.radius; } return this.enqueue(new DelayEffect(dot, this.delay, { callback: function() { return _this.enqueue(new RadiusEffect(dot, _this.duration, { startRadius: startRadius, endRadius: endRadius, easing: easing.quadratic })); } })); }; return LensEvent; })(GeoEvent); MapDot = (function() { function MapDot(smallimap, x, y, landiness) { this.smallimap = smallimap; this.x = x; this.y = y; this.landiness = landiness; this.setColor = __bind(this.setColor, this); this.setRadius = __bind(this.setRadius, this); this.target = {}; this.dirty = true; this.initial = { color: new Color("#E9E9E9"), //color: new Color("#656565"), radius: this.smallimap.radiusFor(this.smallimap.xToLong(this.x), this.smallimap.yToLat(this.y), this.landiness) }; } MapDot.prototype.setRadius = function(radius) { if (this.target.radius) { this.target.radius = (this.target.radius + radius) / 2; } else { this.target.radius = radius; } return this.smallimap.markDirty(this.x, this.y); }; MapDot.prototype.setColor = function(color) { if (this.target.color) { this.target.color = this.target.color.mix(color); } else { this.target.color = color; } return this.smallimap.markDirty(this.x, this.y); }; return MapDot; })(); MapIcon = (function() { function MapIcon(mapContainer, title, label, iconMarker, iconUrl, x, y, bedroom, bathroom, message, contactURL,classname) { this.mapContainer = mapContainer; this.title = title; this.label = label; this.iconMarker = iconMarker; this.iconUrl = iconUrl; this.bedroom = bedroom; this.bathroom = bathroom; this.message = message; this.contactURL = contactURL; this.classname = classname; this.x = x; this.y = y; this.remove = __bind(this.remove, this); this.init = __bind(this.init, this); this.init(); } MapIcon.prototype.init = function() { var hintContent, iconHtml, _this = this; iconHtml = "<div class=\"smallipop smallimap-mapicon\">\n <img src=\"" + this.iconMarker + "\" alt=\"" + this.title + "\"/>\n <span class=\""+this.classname+"\"></span> <div class=\"smallipopHint\"></div>\n</div>"; this.iconObj = $(iconHtml); hintContent = this.iconObj.children('.smallipopHint'); var output = ''; output += '<div class="card map-card"><div class="card-body pb-3">' ; if (this.iconUrl) { output += "<img class=\"smallimap-img mb-3 rounded img-fluid\" src=\"" + this.iconUrl + "\"/>" ; } if (this.label) { output += "<h5 class=\"smallimap-title\">" + this.label + "</h5>" ; } if (this.title) { output += "<span class=\"smallimap-subtitle\">" + this.title + "</span>" ; } if(this.bedroom || this.bathroom){ output += '<div class="mt-2 mb-3 d-flex text-black font-w600 align-items-center">' ; } if(this.bedroom){ output += '<span class="d-block me-3"><svg class="me-2" width="20" height="13" viewBox="0 0 20 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15.8125 5.54171C17.6264 5.54171 19.1667 7.01538 19.1667 8.89588V11.7709H17.7292V12.7292H16.7708V11.7709H2.39583V12.7292H1.4375V11.7709H0V8.89588C0 7.08201 1.48814 5.54171 3.35417 5.54171H15.8125ZM14.8542 0.270874C16.1425 0.270874 17.2504 1.30663 17.25 2.66671L17.2504 4.95601C16.8146 4.71707 16.3271 4.58337 15.8125 4.58337L14.8542 4.58289C14.8542 3.76226 14.1822 3.14587 13.4167 3.14587H10.5417C10.1735 3.14587 9.8377 3.28427 9.58338 3.51186C9.32939 3.28444 8.99338 3.14587 8.625 3.14587H5.75C4.95625 3.14587 4.31276 3.78921 4.3125 4.58289L3.35417 4.58337C2.83975 4.58337 2.35239 4.71699 1.91667 4.95579V2.66671C1.91667 1.37835 2.95002 0.270874 4.3125 0.270874H14.8542ZM8.625 4.10397C8.88503 4.10397 9.10417 4.34355 9.10417 4.58337L5.27083 4.58289C5.27083 4.28973 5.50427 4.10421 5.75 4.10421L8.625 4.10397ZM13.4167 4.10743C13.6878 4.10397 13.8956 4.33738 13.8958 4.58289H10.0625C10.0625 4.28554 10.2959 4.10421 10.5417 4.10421L13.4167 4.10743Z" fill="#216FED"/></svg>'+this.bedroom+'</span>' ; } if(this.bathroom){ output += '<span><svg class="me-2" width="13" height="15" viewBox="0 0 13 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12.92 7.00064L12.6744 8.22859C12.2819 10.1913 10.4996 11.6677 8.55634 11.6677H7.95079L9.11756 14.7791H1.5557V7.00064H12.92ZM3.50032 0C4.54604 0 5.44495 0.871336 5.44495 1.94462V5.05602H12.8345V5.83387H5.44495V6.22279H0.777849L0.777769 7.38965C0.327309 7.05126 0 6.47802 0 5.83387V1.94462C0 0.8989 0.851593 0 1.94462 0H3.50032Z" fill="#216FED"/></svg>'+this.bathroom+'</span>'; } if(this.bedroom || this.bathroom){ output += '</div>'; } if(this.message){ output += '<p class="mb-0">'+this.message+'</p>'; } /* Close Card Body */ output += '</div>'; /* Add Contact Button */ if(this.contactURL){ output += '<div class="card-footer border-0 pt-0"><a href="'+this.contactURL+'" class="btn btn-primary btn-block">Contact Now</a></div>'; } /* Close Card Div */ output += '</div>' ; hintContent.append(output); this.iconObjImage = this.iconObj.children('img'); return this.iconObjImage.on('load',function() { _this.width = _this.iconObjImage[0].width || 24; _this.height = _this.iconObjImage[0].height || 24; _this.iconObjImage.css({ width: '100%', height: '100%' }); if (_this.iconUrl) { hintContent.children('.smallimap-icon').on('load',function() { var hintIcon; hintIcon = $(this); return hintIcon.attr({ width: hintIcon[0].width, height: hintIcon[0].height }); }); } _this.iconObj.css({ position: 'absolute', left: _this.x - _this.width / 2, top: _this.y - _this.height, width: _this.width, height: _this.height }); _this.mapContainer.append(_this.iconObj); return _this.iconObj.smallipop({ theme: 'blue', hideTrigger: true, popupDistance: 10, popupYOffset: 10, popupAnimationSpeed: 200 }); }); }; MapIcon.prototype.remove = function() { return this.iconObj.remove(); }; return MapIcon; })(); easing = { linear: function(progress) { return progress; }, quadratic: function(progress) { return progress * progress; }, cubic: function(progress) { return progress * progress * progress; }, inverse: function(easingFunction) { return function(progress) { return 1 - easingFunction(1 - progress); }; } }; $.si.smallimap.effects = { Effect: Effect, ColorEffect: ColorEffect, RadiusEffect: RadiusEffect }; $.si.smallimap.events = { Event: Event, BlipEvent: BlipEvent, LensEvent: LensEvent }; $.si.smallimap.easing = easing; return $.fn.smallimap = function(options) { if (options == null) { options = {}; } options = $.extend(true, {}, $.si.smallimap.defaults, options); return this.each(function() { /* Updated: for multiple calling */ $(this).empty(); /*Updated: for multiple calling */ var canvas, canvasObj, ctx, self, smallimap; self = $(this).css({ position: 'relative' }); canvasObj = $('<canvas>'); canvasObj.attr({ width: options.width, height: options.height }); self.append(canvasObj); canvas = canvasObj.get(0); ctx = canvas.getContext('2d'); smallimap = new Smallimap(self, canvas.width, canvas.height, ctx, smallimapWorld, options); return self.data('api', smallimap); }); }; })(jQuery);
Save
Back