refactor icon and default marker image paths, wrap library in a function

This commit is contained in:
mourner
2012-05-10 17:03:50 +03:00
parent be647f1b20
commit 6f40aeeb97
4 changed files with 59 additions and 38 deletions

View File

@ -51,11 +51,11 @@ exports.uglify = function (code) {
};
exports.combineFiles = function (files) {
var content = '';
var content = '(function () {\n\n';
for (var i = 0, len = files.length; i < len; i++) {
content += fs.readFileSync(files[i], 'utf8') + '\r\n\r\n';
}
return content;
return content + '\n\n}());';
};
exports.save = function (savePath, compressed) {

View File

@ -107,8 +107,9 @@
var path = getSrcUrl();
for (var i = 0; i < scripts.length; i++) {
document.writeln("<script type='text/javascript' src='" + path + "../src/" + scripts[i] + "'></script>");
document.writeln("<script src='" + path + scripts[i] + "'></script>");
}
document.writeln('<script>L.Icon.Default.imagePath = "' + path + '../dist/images";</script>');
})();
function getRandomLatLng(map) {

View File

@ -1,34 +1,18 @@
var L, originalL;
(function (root) {
root.L = {
VERSION: '0.4',
if (typeof exports !== 'undefined') {
L = exports;
} else {
L = {};
originalL = window.L;
ROOT_URL: root.L_ROOT_URL || (function () {
var scripts = document.getElementsByTagName('script'),
leafletRe = /\/?leaflet[\-\._]?([\w\-\._]*)\.js\??/;
var i, len, src, matches;
for (i = 0, len = scripts.length; i < len; i++) {
src = scripts[i].src;
matches = src.match(leafletRe);
if (matches) {
if (matches[1] === 'include') {
return '../../dist/';
}
return src.split(leafletRe)[0] + '/';
}
}
return '';
}()),
noConflict: function () {
root.L = this._originalL;
return this;
},
_originalL: root.L
L.noConflict = function () {
window.L = originalL;
return L;
};
}(this));
window.L = L;
}
L.version = '0.4';

View File

@ -20,12 +20,17 @@ L.Icon = L.Class.extend({
},
createShadow: function () {
return this.options.shadowUrl ? this._createIcon('shadow') : null;
return this._createIcon('shadow');
},
_createIcon: function (name) {
var img = this._createImg(this.options[name + 'Url']);
var src = this._getIconUrl(name);
if (!src) { return null; }
var img = this._createImg(src);
this._setIconStyles(img, name);
return img;
},
@ -57,6 +62,7 @@ L.Icon = L.Class.extend({
_createImg: function (src) {
var el;
if (!L.Browser.ie6) {
el = document.createElement('img');
el.src = src;
@ -65,17 +71,47 @@ L.Icon = L.Class.extend({
el.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '")';
}
return el;
},
_getIconUrl: function (name) {
return this.options[name + 'Url'];
}
});
// TODO move to a separate file
L.Icon.Default = L.Icon.extend({
options: {
iconUrl: L.ROOT_URL + 'images/marker.png',
iconSize: new L.Point(25, 41),
iconAnchor: new L.Point(13, 41),
popupAnchor: new L.Point(0, -33),
shadowUrl: L.ROOT_URL + 'images/marker-shadow.png',
shadowSize: new L.Point(41, 41)
},
_getIconUrl: function (name) {
var path = L.Icon.Default.imagePath;
if (!path) {
throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");
}
return path + '/marker-' + name + '.png';
}
});
L.Icon.Default.imagePath = (function () {
var scripts = document.getElementsByTagName('script'),
leafletRe = /\/?leaflet[\-\._]?([\w\-\._]*)\.js\??/;
var i, len, src, matches;
for (i = 0, len = scripts.length; i < len; i++) {
src = scripts[i].src;
matches = src.match(leafletRe);
if (matches) {
return src.split(leafletRe)[0] + '/images';
}
}
}());