依赖文件
This commit is contained in:
+796
@@ -0,0 +1,796 @@
|
||||
|
||||
var BaseArrayClass = require('./BaseArrayClass');
|
||||
var utils = require('cordova/utils');
|
||||
|
||||
var resolvedPromise = typeof Promise == 'undefined' ? null : Promise.resolve();
|
||||
var nextTick = resolvedPromise ? function (fn) {
|
||||
resolvedPromise.then(fn);
|
||||
} : function (fn) {
|
||||
setTimeout(fn);
|
||||
};
|
||||
|
||||
//---------------------------
|
||||
// Convert HTML color to RGB
|
||||
//---------------------------
|
||||
function isHTMLColorString(inputValue) {
|
||||
if (!inputValue || typeof inputValue !== 'string') {
|
||||
return false;
|
||||
}
|
||||
if (inputValue.match(/^#[0-9A-F]{3}$/i) ||
|
||||
inputValue.match(/^#[0-9A-F]{4}$/i) ||
|
||||
inputValue.match(/^#[0-9A-F]{6}$/i) ||
|
||||
inputValue.match(/^#[0-9A-F]{8}$/i) ||
|
||||
inputValue.match(/^rgba?\([\d,.\s]+\)$/) ||
|
||||
inputValue.match(/^hsla?\([\d%,.\s]+\)$/)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
inputValue = inputValue.toLowerCase();
|
||||
return inputValue in HTML_COLORS;
|
||||
}
|
||||
|
||||
function HTMLColor2RGBA(colorValue, defaultOpacity) {
|
||||
defaultOpacity = !defaultOpacity ? 1.0 : defaultOpacity;
|
||||
if (colorValue instanceof Array) {
|
||||
return colorValue;
|
||||
}
|
||||
if (colorValue === 'transparent' || !colorValue) {
|
||||
return [0, 0, 0, 0];
|
||||
}
|
||||
var alpha = Math.floor(255 * defaultOpacity),
|
||||
matches;
|
||||
var colorStr = colorValue.toLowerCase();
|
||||
if (colorStr in HTML_COLORS) {
|
||||
colorStr = HTML_COLORS[colorStr];
|
||||
}
|
||||
if (colorStr.match(/^#([0-9A-F]){3}$/i)) {
|
||||
matches = colorStr.match(/([0-9A-F])/ig);
|
||||
|
||||
return [
|
||||
parseInt(matches[0], 16),
|
||||
parseInt(matches[1], 16),
|
||||
parseInt(matches[2], 16),
|
||||
alpha
|
||||
];
|
||||
}
|
||||
|
||||
if (colorStr.match(/^#[0-9A-F]{4}$/i)) {
|
||||
alpha = colorStr.substr(4, 1);
|
||||
alpha = parseInt(alpha + alpha, 16);
|
||||
|
||||
matches = colorStr.match(/([0-9A-F])/ig);
|
||||
return [
|
||||
parseInt(matches[0], 16),
|
||||
parseInt(matches[1], 16),
|
||||
parseInt(matches[2], 16),
|
||||
alpha
|
||||
];
|
||||
}
|
||||
|
||||
if (colorStr.match(/^#[0-9A-F]{6}$/i)) {
|
||||
matches = colorStr.match(/([0-9A-F]{2})/ig);
|
||||
return [
|
||||
parseInt(matches[0], 16),
|
||||
parseInt(matches[1], 16),
|
||||
parseInt(matches[2], 16),
|
||||
alpha
|
||||
];
|
||||
}
|
||||
if (colorStr.match(/^#[0-9A-F]{8}$/i)) {
|
||||
matches = colorStr.match(/([0-9A-F]{2})/ig);
|
||||
|
||||
return [
|
||||
parseInt(matches[0], 16),
|
||||
parseInt(matches[1], 16),
|
||||
parseInt(matches[2], 16),
|
||||
parseInt(matches[3], 16)
|
||||
];
|
||||
}
|
||||
// convert rgb(), rgba()
|
||||
if (colorStr.match(/^rgba?\([\d,.\s]+\)$/)) {
|
||||
matches = colorStr.match(/([\d.]+)/g);
|
||||
alpha = matches.length == 4 ? Math.floor(parseFloat(matches[3]) * 255) : alpha;
|
||||
return [
|
||||
parseInt(matches[0], 10),
|
||||
parseInt(matches[1], 10),
|
||||
parseInt(matches[2], 10),
|
||||
alpha
|
||||
];
|
||||
}
|
||||
|
||||
// convert hsl(), hsla()
|
||||
if (colorStr.match(/^hsla?\([\d%,.\s]+\)$/)) {
|
||||
matches = colorStr.match(/([\d%.]+)/g);
|
||||
alpha = matches.length == 4 ? Math.floor(parseFloat(matches[3]) * 255) : alpha;
|
||||
var rgb = HLStoRGB(matches[0], matches[1], matches[2]);
|
||||
rgb.push(alpha);
|
||||
return rgb;
|
||||
}
|
||||
|
||||
console.warn('Warning: "' + colorValue + '" is not available. The overlay is drew by black.');
|
||||
return [0, 0, 0, alpha];
|
||||
}
|
||||
|
||||
/**
|
||||
* http://d.hatena.ne.jp/ja9/20100907/1283840213
|
||||
*/
|
||||
function HLStoRGB(h, l, s) {
|
||||
var r, g, b; // 0..255
|
||||
|
||||
while (h < 0) {
|
||||
h += 360;
|
||||
}
|
||||
h = h % 360;
|
||||
|
||||
// In case of saturation = 0
|
||||
if (s === 0) {
|
||||
// RGB are the same as V
|
||||
l = Math.round(l * 255);
|
||||
return [l, l, l];
|
||||
}
|
||||
|
||||
var m2 = (l < 0.5) ? l * (1 + s) : l + s - l * s,
|
||||
m1 = l * 2 - m2,
|
||||
tmp;
|
||||
|
||||
tmp = h + 120;
|
||||
if (tmp > 360) {
|
||||
tmp = tmp - 360;
|
||||
}
|
||||
|
||||
if (tmp < 60) {
|
||||
r = (m1 + (m2 - m1) * tmp / 60);
|
||||
} else if (tmp < 180) {
|
||||
r = m2;
|
||||
} else if (tmp < 240) {
|
||||
r = m1 + (m2 - m1) * (240 - tmp) / 60;
|
||||
} else {
|
||||
r = m1;
|
||||
}
|
||||
|
||||
tmp = h;
|
||||
if (tmp < 60) {
|
||||
g = m1 + (m2 - m1) * tmp / 60;
|
||||
} else if (tmp < 180) {
|
||||
g = m2;
|
||||
} else if (tmp < 240) {
|
||||
g = m1 + (m2 - m1) * (240 - tmp) / 60;
|
||||
} else {
|
||||
g = m1;
|
||||
}
|
||||
|
||||
tmp = h - 120;
|
||||
if (tmp < 0) {
|
||||
tmp = tmp + 360;
|
||||
}
|
||||
if (tmp < 60) {
|
||||
b = m1 + (m2 - m1) * tmp / 60;
|
||||
} else if (tmp < 180) {
|
||||
b = m2;
|
||||
} else if (tmp < 240) {
|
||||
b = m1 + (m2 - m1) * (240 - tmp) / 60;
|
||||
} else {
|
||||
b = m1;
|
||||
}
|
||||
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
|
||||
}
|
||||
|
||||
function parseBoolean(boolValue) {
|
||||
return typeof (boolValue) === 'string' && boolValue.toLowerCase() === 'true' ||
|
||||
boolValue === true ||
|
||||
boolValue === 1;
|
||||
}
|
||||
|
||||
function isDom(element) {
|
||||
return element &&
|
||||
element.nodeType === Node.ELEMENT_NODE &&
|
||||
element instanceof SVGElement === false &&
|
||||
typeof element.getBoundingClientRect === 'function';
|
||||
}
|
||||
|
||||
function getDivRect(div) {
|
||||
if (!div) {
|
||||
return;
|
||||
}
|
||||
var rect;
|
||||
if (div === document.body) {
|
||||
rect = div.getBoundingClientRect();
|
||||
rect.left = Math.max(rect.left, window.pageOffsetX);
|
||||
rect.top = Math.max(rect.top, window.pageOffsetY);
|
||||
rect.width = Math.max(rect.width, window.innerWidth);
|
||||
rect.height = Math.max(rect.height, window.innerHeight);
|
||||
rect.right = rect.left + rect.width;
|
||||
rect.bottom = rect.top + rect.height;
|
||||
} else {
|
||||
rect = div.getBoundingClientRect();
|
||||
if ('right' in rect === false) {
|
||||
rect.right = rect.left + rect.width;
|
||||
}
|
||||
if ('bottom' in rect === false) {
|
||||
rect.bottom = rect.top + rect.height;
|
||||
}
|
||||
}
|
||||
return {
|
||||
left: rect.left,
|
||||
top: rect.top,
|
||||
width: rect.width,
|
||||
height: rect.height,
|
||||
right: rect.right,
|
||||
bottom: rect.bottom
|
||||
};
|
||||
}
|
||||
|
||||
var ignoreTags = [
|
||||
'pre', 'textarea', 'p', 'input', 'caption', 'canvas', 'svg'
|
||||
];
|
||||
|
||||
function shouldWatchByNative(node) {
|
||||
if (!node || node.nodeType !== Node.ELEMENT_NODE || !node.parentNode || node instanceof SVGElement) {
|
||||
if (node === document.body) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
var tagName = node.tagName.toLowerCase();
|
||||
if (ignoreTags.indexOf(tagName) > -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var classNames = (node.className || '').split(' ');
|
||||
if (classNames.indexOf('_gmaps_cdv_') > -1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var visibilityCSS = getStyle(node, 'visibility');
|
||||
var displayCSS = getStyle(node, 'display');
|
||||
|
||||
// Do not check this at here.
|
||||
//var pointerEventsCSS = getStyle(node, 'pointer-events');
|
||||
|
||||
//-----------------------------------------
|
||||
// no longer check the opacity property,
|
||||
// because the app might start changing the opacity later.
|
||||
//-----------------------------------------
|
||||
//var opacityCSS = getStyle(node, 'opacity');
|
||||
//opacityCSS = /^[\d.]+$/.test(opacityCSS + '') ? opacityCSS : 1;
|
||||
|
||||
//-----------------------------------------
|
||||
// no longer check the clickable size,
|
||||
// because HTML still can display larger element inside one small element.
|
||||
//-----------------------------------------
|
||||
// var clickableSize = (
|
||||
// node.offsetHeight > 0 && node.offsetWidth > 0 ||
|
||||
// node.clientHeight > 0 && node.clientWidth > 0);
|
||||
return displayCSS !== 'none' &&
|
||||
visibilityCSS !== 'hidden';
|
||||
}
|
||||
|
||||
// Get z-index order
|
||||
// http://stackoverflow.com/a/24136505
|
||||
var internalCache = {};
|
||||
|
||||
function _clearInternalCache() {
|
||||
internalCache = undefined;
|
||||
internalCache = {};
|
||||
}
|
||||
|
||||
function _removeCacheById(elemId) {
|
||||
delete internalCache[elemId];
|
||||
}
|
||||
|
||||
function getZIndex(dom) {
|
||||
if (dom === document.body) {
|
||||
internalCache = undefined;
|
||||
internalCache = {};
|
||||
}
|
||||
if (!dom) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var z = 0;
|
||||
if (window.getComputedStyle) {
|
||||
z = document.defaultView.getComputedStyle(dom, null).getPropertyValue('z-index');
|
||||
}
|
||||
if (dom.currentStyle) {
|
||||
z = dom.currentStyle['z-index'];
|
||||
}
|
||||
var elemId = dom.getAttribute('__pluginDomId');
|
||||
var parentNode = dom.parentNode;
|
||||
var parentZIndex = 0;
|
||||
if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {
|
||||
var parentElemId = parentNode.getAttribute('__pluginDomId');
|
||||
if (parentElemId in internalCache) {
|
||||
parentZIndex = internalCache[parentElemId];
|
||||
} else {
|
||||
parentZIndex = getZIndex(dom.parentNode);
|
||||
internalCache[parentElemId] = parentZIndex;
|
||||
}
|
||||
}
|
||||
|
||||
var isInherit = false;
|
||||
if (z === 'unset' || z === 'initial') {
|
||||
z = 0;
|
||||
} else if (z === 'auto' || z === 'inherit') {
|
||||
z = 0;
|
||||
isInherit = true;
|
||||
} else {
|
||||
z = parseInt(z);
|
||||
}
|
||||
//dom.setAttribute('__ZIndex', z);
|
||||
internalCache[elemId] = z + parentZIndex;
|
||||
return {
|
||||
isInherit: isInherit,
|
||||
z: z
|
||||
};
|
||||
}
|
||||
|
||||
// Get CSS value of an element
|
||||
// http://stackoverflow.com/a/1388022
|
||||
function getStyle(element, styleProperty) {
|
||||
if (window.getComputedStyle) {
|
||||
return document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProperty);
|
||||
} else if (element.currentStyle) {
|
||||
return element.currentStyle[styleProperty];
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var HTML_COLORS = {
|
||||
'aliceblue': '#f0f8ff',
|
||||
'antiquewhite': '#faebd7',
|
||||
'aqua': '#00ffff',
|
||||
'aquamarine': '#7fffd4',
|
||||
'azure': '#f0ffff',
|
||||
'beige': '#f5f5dc',
|
||||
'bisque': '#ffe4c4',
|
||||
'black': '#000000',
|
||||
'blanchedalmond': '#ffebcd',
|
||||
'blue': '#0000ff',
|
||||
'blueviolet': '#8a2be2',
|
||||
'brown': '#a52a2a',
|
||||
'burlywood': '#deb887',
|
||||
'cadetblue': '#5f9ea0',
|
||||
'chartreuse': '#7fff00',
|
||||
'chocolate': '#d2691e',
|
||||
'coral': '#ff7f50',
|
||||
'cornflowerblue': '#6495ed',
|
||||
'cornsilk': '#fff8dc',
|
||||
'crimson': '#dc143c',
|
||||
'cyan': '#00ffff',
|
||||
'darkblue': '#00008b',
|
||||
'darkcyan': '#008b8b',
|
||||
'darkgoldenrod': '#b8860b',
|
||||
'darkgray': '#a9a9a9',
|
||||
'darkgrey': '#a9a9a9',
|
||||
'darkgreen': '#006400',
|
||||
'darkkhaki': '#bdb76b',
|
||||
'darkmagenta': '#8b008b',
|
||||
'darkolivegreen': '#556b2f',
|
||||
'darkorange': '#ff8c00',
|
||||
'darkorchid': '#9932cc',
|
||||
'darkred': '#8b0000',
|
||||
'darksalmon': '#e9967a',
|
||||
'darkseagreen': '#8fbc8f',
|
||||
'darkslateblue': '#483d8b',
|
||||
'darkslategray': '#2f4f4f',
|
||||
'darkslategrey': '#2f4f4f',
|
||||
'darkturquoise': '#00ced1',
|
||||
'darkviolet': '#9400d3',
|
||||
'deeppink': '#ff1493',
|
||||
'deepskyblue': '#00bfff',
|
||||
'dimgray': '#696969',
|
||||
'dimgrey': '#696969',
|
||||
'dodgerblue': '#1e90ff',
|
||||
'firebrick': '#b22222',
|
||||
'floralwhite': '#fffaf0',
|
||||
'forestgreen': '#228b22',
|
||||
'fuchsia': '#ff00ff',
|
||||
'gainsboro': '#dcdcdc',
|
||||
'ghostwhite': '#f8f8ff',
|
||||
'gold': '#ffd700',
|
||||
'goldenrod': '#daa520',
|
||||
'gray': '#808080',
|
||||
'grey': '#808080',
|
||||
'green': '#008000',
|
||||
'greenyellow': '#adff2f',
|
||||
'honeydew': '#f0fff0',
|
||||
'hotpink': '#ff69b4',
|
||||
'indianred ': '#cd5c5c',
|
||||
'indigo ': '#4b0082',
|
||||
'ivory': '#fffff0',
|
||||
'khaki': '#f0e68c',
|
||||
'lavender': '#e6e6fa',
|
||||
'lavenderblush': '#fff0f5',
|
||||
'lawngreen': '#7cfc00',
|
||||
'lemonchiffon': '#fffacd',
|
||||
'lightblue': '#add8e6',
|
||||
'lightcoral': '#f08080',
|
||||
'lightcyan': '#e0ffff',
|
||||
'lightgoldenrodyellow': '#fafad2',
|
||||
'lightgray': '#d3d3d3',
|
||||
'lightgrey': '#d3d3d3',
|
||||
'lightgreen': '#90ee90',
|
||||
'lightpink': '#ffb6c1',
|
||||
'lightsalmon': '#ffa07a',
|
||||
'lightseagreen': '#20b2aa',
|
||||
'lightskyblue': '#87cefa',
|
||||
'lightslategray': '#778899',
|
||||
'lightslategrey': '#778899',
|
||||
'lightsteelblue': '#b0c4de',
|
||||
'lightyellow': '#ffffe0',
|
||||
'lime': '#00ff00',
|
||||
'limegreen': '#32cd32',
|
||||
'linen': '#faf0e6',
|
||||
'magenta': '#ff00ff',
|
||||
'maroon': '#800000',
|
||||
'mediumaquamarine': '#66cdaa',
|
||||
'mediumblue': '#0000cd',
|
||||
'mediumorchid': '#ba55d3',
|
||||
'mediumpurple': '#9370db',
|
||||
'mediumseagreen': '#3cb371',
|
||||
'mediumslateblue': '#7b68ee',
|
||||
'mediumspringgreen': '#00fa9a',
|
||||
'mediumturquoise': '#48d1cc',
|
||||
'mediumvioletred': '#c71585',
|
||||
'midnightblue': '#191970',
|
||||
'mintcream': '#f5fffa',
|
||||
'mistyrose': '#ffe4e1',
|
||||
'moccasin': '#ffe4b5',
|
||||
'navajowhite': '#ffdead',
|
||||
'navy': '#000080',
|
||||
'oldlace': '#fdf5e6',
|
||||
'olive': '#808000',
|
||||
'olivedrab': '#6b8e23',
|
||||
'orange': '#ffa500',
|
||||
'orangered': '#ff4500',
|
||||
'orchid': '#da70d6',
|
||||
'palegoldenrod': '#eee8aa',
|
||||
'palegreen': '#98fb98',
|
||||
'paleturquoise': '#afeeee',
|
||||
'palevioletred': '#db7093',
|
||||
'papayawhip': '#ffefd5',
|
||||
'peachpuff': '#ffdab9',
|
||||
'peru': '#cd853f',
|
||||
'pink': '#ffc0cb',
|
||||
'plum': '#dda0dd',
|
||||
'powderblue': '#b0e0e6',
|
||||
'purple': '#800080',
|
||||
'rebeccapurple': '#663399',
|
||||
'red': '#ff0000',
|
||||
'rosybrown': '#bc8f8f',
|
||||
'royalblue': '#4169e1',
|
||||
'saddlebrown': '#8b4513',
|
||||
'salmon': '#fa8072',
|
||||
'sandybrown': '#f4a460',
|
||||
'seagreen': '#2e8b57',
|
||||
'seashell': '#fff5ee',
|
||||
'sienna': '#a0522d',
|
||||
'silver': '#c0c0c0',
|
||||
'skyblue': '#87ceeb',
|
||||
'slateblue': '#6a5acd',
|
||||
'slategray': '#708090',
|
||||
'slategrey': '#708090',
|
||||
'snow': '#fffafa',
|
||||
'springgreen': '#00ff7f',
|
||||
'steelblue': '#4682b4',
|
||||
'tan': '#d2b48c',
|
||||
'teal': '#008080',
|
||||
'thistle': '#d8bfd8',
|
||||
'tomato': '#ff6347',
|
||||
'turquoise': '#40e0d0',
|
||||
'violet': '#ee82ee',
|
||||
'wheat': '#f5deb3',
|
||||
'white': '#ffffff',
|
||||
'whitesmoke': '#f5f5f5',
|
||||
'yellow': '#ffff00',
|
||||
'yellowgreen': '#9acd32'
|
||||
};
|
||||
|
||||
function defaultTrueOption(value) {
|
||||
return value === undefined ? true : value === true;
|
||||
}
|
||||
|
||||
function createMvcArray(array) {
|
||||
if (!array) {
|
||||
return new BaseArrayClass();
|
||||
}
|
||||
if (array.type === 'BaseArrayClass') {
|
||||
return array;
|
||||
}
|
||||
|
||||
var mvcArray;
|
||||
if (array.type === 'LatLngBounds') {
|
||||
array = [
|
||||
array.southwest,
|
||||
{
|
||||
lat: array.northeast.lat,
|
||||
lng: array.southwest.lng
|
||||
},
|
||||
array.northeast,
|
||||
{
|
||||
lat: array.southwest.lat,
|
||||
lng: array.northeast.lng
|
||||
},
|
||||
array.southwest
|
||||
];
|
||||
array = array.map(getLatLng);
|
||||
}
|
||||
|
||||
if (array && typeof array.getArray === 'function') {
|
||||
mvcArray = new BaseArrayClass(array.getArray());
|
||||
array.on('set_at', function (index) {
|
||||
var value = array.getAt(index);
|
||||
value = 'position' in value ? value.getPosition() : value;
|
||||
mvcArray.setAt(index, value);
|
||||
});
|
||||
array.on('insert_at', function (index) {
|
||||
var value = array.getAt(index);
|
||||
value = 'position' in value ? value.getPosition() : value;
|
||||
mvcArray.insertAt(index, value);
|
||||
});
|
||||
array.on('remove_at', function (index) {
|
||||
mvcArray.removeAt(index);
|
||||
});
|
||||
|
||||
} else {
|
||||
mvcArray = new BaseArrayClass(array ? array.slice(0) : undefined);
|
||||
}
|
||||
return mvcArray;
|
||||
}
|
||||
|
||||
function getLatLng(target) {
|
||||
return 'getPosition' in target ? target.getPosition() : {
|
||||
'lat': parseFloat(target.lat, 10),
|
||||
'lng': parseFloat(target.lng, 10)
|
||||
};
|
||||
}
|
||||
|
||||
function convertToPositionArray(array) {
|
||||
array = array || [];
|
||||
|
||||
if (!utils.isArray(array)) {
|
||||
if (array.type === 'LatLngBounds') {
|
||||
array = [
|
||||
array.southwest,
|
||||
{
|
||||
lat: array.northeast.lat,
|
||||
lng: array.southwest.lng
|
||||
},
|
||||
array.northeast,
|
||||
{
|
||||
lat: array.southwest.lat,
|
||||
lng: array.northeast.lng
|
||||
},
|
||||
array.southwest
|
||||
];
|
||||
} else if (array && typeof array.getArray === 'function') {
|
||||
array = array.getArray();
|
||||
} else {
|
||||
array = [array];
|
||||
}
|
||||
}
|
||||
|
||||
array = array.map(getLatLng);
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
function markerOptionsFilter(markerOptions) {
|
||||
markerOptions = markerOptions || {};
|
||||
|
||||
markerOptions.animation = markerOptions.animation || undefined;
|
||||
markerOptions.position = markerOptions.position || {};
|
||||
markerOptions.position.lat = markerOptions.position.lat || 0.0;
|
||||
markerOptions.position.lng = markerOptions.position.lng || 0.0;
|
||||
markerOptions.draggable = markerOptions.draggable === true;
|
||||
markerOptions.icon = markerOptions.icon || undefined;
|
||||
markerOptions.zIndex = markerOptions.zIndex || 0;
|
||||
markerOptions.snippet = typeof (markerOptions.snippet) === 'string' ? markerOptions.snippet : undefined;
|
||||
markerOptions.title = typeof (markerOptions.title) === 'string' ? markerOptions.title : undefined;
|
||||
markerOptions.visible = defaultTrueOption(markerOptions.visible);
|
||||
markerOptions.flat = markerOptions.flat === true;
|
||||
markerOptions.rotation = markerOptions.rotation || 0;
|
||||
markerOptions.opacity = markerOptions.opacity === 0 ? 0 : (parseFloat('' + markerOptions.opacity, 10) || 1);
|
||||
markerOptions.disableAutoPan = markerOptions.disableAutoPan === true;
|
||||
markerOptions.noCache = markerOptions.noCache === true; //experimental
|
||||
if (typeof markerOptions.icon === 'object') {
|
||||
if ('anchor' in markerOptions.icon &&
|
||||
!Array.isArray(markerOptions.icon.anchor) &&
|
||||
'x' in markerOptions.icon.anchor &&
|
||||
'y' in markerOptions.icon.anchor) {
|
||||
markerOptions.icon.anchor = [markerOptions.icon.anchor.x, markerOptions.icon.anchor.y];
|
||||
}
|
||||
}
|
||||
|
||||
if ('infoWindowAnchor' in markerOptions &&
|
||||
!Array.isArray(markerOptions.infoWindowAnchor) &&
|
||||
'x' in markerOptions.infoWindowAnchor &&
|
||||
'y' in markerOptions.infoWindowAnchor) {
|
||||
markerOptions.infoWindowAnchor = [markerOptions.infoWindowAnchor.x, markerOptions.infoWindowAnchor.anchor.y];
|
||||
}
|
||||
|
||||
if ('style' in markerOptions && !('styles' in markerOptions)) {
|
||||
markerOptions.styles = markerOptions.style;
|
||||
delete markerOptions.style;
|
||||
}
|
||||
if ('styles' in markerOptions) {
|
||||
markerOptions.styles = typeof markerOptions.styles === 'object' ? markerOptions.styles : {};
|
||||
|
||||
if ('color' in markerOptions.styles) {
|
||||
markerOptions.styles.color = HTMLColor2RGBA(markerOptions.styles.color || '#000000');
|
||||
}
|
||||
}
|
||||
if (markerOptions.icon && isHTMLColorString(markerOptions.icon)) {
|
||||
markerOptions.icon = HTMLColor2RGBA(markerOptions.icon);
|
||||
}
|
||||
if (markerOptions.icon && markerOptions.icon.label &&
|
||||
isHTMLColorString(markerOptions.icon.label.color)) {
|
||||
markerOptions.icon.label.color = HTMLColor2RGBA(markerOptions.icon.label.color);
|
||||
}
|
||||
return markerOptions;
|
||||
}
|
||||
|
||||
function quickfilter(domPositions, mapElemIDs) {
|
||||
//console.log('before', JSON.parse(JSON.stringify(domPositions)));
|
||||
var keys = Object.keys(domPositions);
|
||||
|
||||
var tree = {};
|
||||
mapElemIDs.forEach(function (mapElemId) {
|
||||
var size = domPositions[mapElemId].size;
|
||||
var mapRect = {
|
||||
left: size.left,
|
||||
top: size.top,
|
||||
right: size.left + size.width,
|
||||
bottom: size.top + size.height
|
||||
};
|
||||
|
||||
tree[mapElemId] = domPositions[mapElemId];
|
||||
|
||||
keys.forEach(function (elemId) {
|
||||
if (domPositions[elemId].ignore) {
|
||||
return;
|
||||
}
|
||||
var domSize = {
|
||||
left: domPositions[elemId].size.left,
|
||||
top: domPositions[elemId].size.top,
|
||||
right: domPositions[elemId].size.left + domPositions[elemId].size.width,
|
||||
bottom: domPositions[elemId].size.bottom + domPositions[elemId].size.height
|
||||
};
|
||||
if (
|
||||
(domSize.left >= mapRect.left && domSize.left <= mapRect.right) ||
|
||||
(domSize.right >= mapRect.left && domSize.right <= mapRect.right) ||
|
||||
(domSize.top >= mapRect.top && domSize.top <= mapRect.bottom) ||
|
||||
(domSize.bottom >= mapRect.top && domSize.bottom <= mapRect.bottom)
|
||||
) {
|
||||
tree[elemId] = domPositions[elemId];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//console.log('after', JSON.parse(JSON.stringify(tree)));
|
||||
return tree;
|
||||
}
|
||||
|
||||
function getPluginDomId(element) {
|
||||
// Generates a __pluginDomId
|
||||
if (!element || !shouldWatchByNative(element)) {
|
||||
return;
|
||||
}
|
||||
var elemId = element.getAttribute('__pluginDomId');
|
||||
if (!elemId) {
|
||||
if (element === document.body) {
|
||||
elemId = 'root';
|
||||
} else {
|
||||
elemId = 'pgm' + Math.floor(Math.random() * Date.now());
|
||||
}
|
||||
element.setAttribute('__pluginDomId', elemId);
|
||||
}
|
||||
return elemId;
|
||||
}
|
||||
|
||||
// Add hashCode() method
|
||||
// https://stackoverflow.com/a/7616484/697856
|
||||
function hashCode(text) {
|
||||
var hash = 0,
|
||||
i, chr;
|
||||
if (text.length === 0) return hash;
|
||||
for (i = 0; i < text.length; i++) {
|
||||
chr = text.charCodeAt(i);
|
||||
hash = ((hash << 5) - hash) + chr;
|
||||
hash |= 0; // Convert to 32bit integer
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
function createEvent(eventName, properties) {
|
||||
var evt;
|
||||
if (typeof CustomEvent === 'function') {
|
||||
evt = new CustomEvent(eventName, {
|
||||
bubbles: true,
|
||||
detail: properties || null
|
||||
});
|
||||
} else {
|
||||
evt = document.createEvent('Event');
|
||||
evt.initEvent(eventName, true, false);
|
||||
if (properties) {
|
||||
Object.keys(properties).forEach(function (key) {
|
||||
if (!(key in properties)) {
|
||||
evt[key] = properties[key];
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return evt;
|
||||
}
|
||||
|
||||
function attachTransparentClass(div) {
|
||||
|
||||
if (div.classList && !div.classList.contains('_gmaps_cdv_')) {
|
||||
div.classList.add('_gmaps_cdv_');
|
||||
} else if (div.className && div.className.indexOf('_gmaps_cdv_') === -1) {
|
||||
div.className = div.className + ' _gmaps_cdv_';
|
||||
}
|
||||
|
||||
if (div.shadowRoot) {
|
||||
var styleAttr = div.getAttribute('style') || '';
|
||||
if (styleAttr && styleAttr.indexOf('--ion-background-color') === -1) {
|
||||
styleAttr = styleAttr + ' --ion-background-color: transparent;';
|
||||
}
|
||||
div.setAttribute('style', styleAttr);
|
||||
}
|
||||
}
|
||||
// function dettachTransparentClass(root) {
|
||||
//
|
||||
// if (div.classList && div.classList.contains('_gmaps_cdv_')) {
|
||||
// div.classList.remove('_gmaps_cdv_');
|
||||
// } else if (div.className && div.className.indexOf('_gmaps_cdv_') === -1) {
|
||||
// div.className = div.className.replace('_gmaps_cdv_', '');
|
||||
// }
|
||||
//
|
||||
// var visibilityCSS = getStyle(node, 'visibility');
|
||||
// if (getStyle(div, 'background-color') === 'transparent !important') {
|
||||
// div.style.backgroundColor = undefined;
|
||||
// }
|
||||
// if (getStyle(div, 'background') === 'transparent !important') {
|
||||
// div.style.backgroundColor = undefined;
|
||||
// }
|
||||
// if (getStyle(div, 'background-image') === 'transparent !important') {
|
||||
// div.style.backgroundImage = undefined;
|
||||
// }
|
||||
// if (div.shadowRoot) {
|
||||
// var hiddenChildren = div.querySelectorAll('*');
|
||||
// hiddenChildren = Array.prototype.splice(hiddenChildren, 0);
|
||||
// hiddenChildren.forEach(dettachTransparentClass);
|
||||
// }
|
||||
// }
|
||||
|
||||
module.exports = {
|
||||
_clearInternalCache: _clearInternalCache,
|
||||
_removeCacheById: _removeCacheById,
|
||||
getZIndex: getZIndex,
|
||||
getDivRect: getDivRect,
|
||||
isDom: isDom,
|
||||
parseBoolean: parseBoolean,
|
||||
HLStoRGB: HLStoRGB,
|
||||
HTMLColor2RGBA: HTMLColor2RGBA,
|
||||
isHTMLColorString: isHTMLColorString,
|
||||
defaultTrueOption: defaultTrueOption,
|
||||
createMvcArray: createMvcArray,
|
||||
getStyle: getStyle,
|
||||
convertToPositionArray: convertToPositionArray,
|
||||
getLatLng: getLatLng,
|
||||
shouldWatchByNative: shouldWatchByNative,
|
||||
markerOptionsFilter: markerOptionsFilter,
|
||||
quickfilter: quickfilter,
|
||||
nextTick: nextTick,
|
||||
getPluginDomId: getPluginDomId,
|
||||
hashCode: hashCode,
|
||||
createEvent: createEvent,
|
||||
//dettachTransparentClass: dettachTransparentClass,
|
||||
attachTransparentClass: attachTransparentClass
|
||||
};
|
||||
|
||||
if (cordova && cordova.platformId === 'browser') {
|
||||
require('cordova/exec/proxy').add('common', module.exports);
|
||||
}
|
||||
Reference in New Issue
Block a user