markerclustererplus-rails 2.0.16.1 → 2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02a300d6483702597fddc1e4196a765d5ad7ddaf
4
- data.tar.gz: fb04716ed8084220b523ddf2946ace788bc26328
3
+ metadata.gz: 72e3cfc9cc563595f309c46868249ccd402a4e1f
4
+ data.tar.gz: 964fc86c9024fca01c07dd30fb53fe073849e6ae
5
5
  SHA512:
6
- metadata.gz: d3518b1e9e7ea1e9d40f24fe8efb2a0d656373522bdfb24c62333dd3cbf713582c4bfb804df8377ba34ec90ca1d3e419f24147120b6911f0baa2ebaf3ea70783
7
- data.tar.gz: 3a7f34bdb88bc5c1a05bd64901e6c1b7423184041f3c7d3f29e500be6ebf6f8bea8fe8f04f78654ea4884fbf780de42cc372821423a2d5affceba4546afff02c
6
+ metadata.gz: 67369f0678981ba8931af04ba1f4ccbe6499cc4ea4f78ccbca8315dfa62b3abf81622338b501965a0a7aa79865a118fbf6e0abc4202ab0dbe4232f0b6545795e
7
+ data.tar.gz: f90f0d75c39904a685725406e757cc9f5097553f4736149d12e1a0067bb8c1147c59904a0d6aef3aede287617e3ca101269f23a5626665af74eae0afbd31e722
data/README.md CHANGED
@@ -5,7 +5,7 @@ The files will be added to the asset pipeline and available for you to use.
5
5
 
6
6
  For info on how to use the library see the original documentation:
7
7
 
8
- [MarkerClustererPlus for Google Maps V3](http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.16/docs/reference.html)
8
+ [MarkerClustererPlus for Google Maps V3](http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.1/docs/reference.html)
9
9
 
10
10
  MarkerClustererPlus is an enhanced Google Maps V3 implementation of the V2 MarkerClusterer.
11
11
 
@@ -1,9 +1,6 @@
1
- /*jslint browser: true, confusion: true, sloppy: true, vars: true, nomen: false, plusplus: false, indent: 2 */
2
- /*global window,google */
3
-
4
1
  /**
5
2
  * @name MarkerClustererPlus for Google Maps V3
6
- * @version 2.0.16 [October 18, 2012]
3
+ * @version 2.1 [November 3, 2013]
7
4
  * @author Gary Little
8
5
  * @fileoverview
9
6
  * The library creates and manages per-zoom-level clusters for large amounts of markers.
@@ -15,21 +12,20 @@
15
12
  * >V3 MarkerClusterer</a> port by Luke Mahe. MarkerClustererPlus was created by Gary Little.
16
13
  * <p>
17
14
  * v2.0 release: MarkerClustererPlus v2.0 is backward compatible with MarkerClusterer v1.0. It
18
- * adds support for the <code>ignoreHidden</code>, <code>title</code>, <code>printable</code>,
19
- * <code>batchSizeIE</code>, and <code>calculator</code> properties as well as support for
20
- * four more events. It also allows greater control over the styling of the text that appears
21
- * on the cluster marker. The documentation has been significantly improved and the overall
22
- * code has been simplified and polished. Very large numbers of markers can now be managed
23
- * without causing Javascript timeout errors on Internet Explorer. Note that the name of the
24
- * <code>clusterclick</code> event has been deprecated. The new name is <code>click</code>,
25
- * so please change your application code now.
15
+ * adds support for the <code>ignoreHidden</code>, <code>title</code>, <code>batchSizeIE</code>,
16
+ * and <code>calculator</code> properties as well as support for four more events. It also allows
17
+ * greater control over the styling of the text that appears on the cluster marker. The
18
+ * documentation has been significantly improved and the overall code has been simplified and
19
+ * polished. Very large numbers of markers can now be managed without causing Javascript timeout
20
+ * errors on Internet Explorer. Note that the name of the <code>clusterclick</code> event has been
21
+ * deprecated. The new name is <code>click</code>, so please change your application code now.
26
22
  */
27
23
 
28
24
  /**
29
25
  * This file modified for use with the Rails asset pipeline
30
26
  * https://github.com/RogerE/markerclustererplus-rails
31
27
  * gem markerclustererplus-rails
32
- * gem version 2.0.16.1
28
+ * gem version 2.1
33
29
  * @author Roger Ertesvag
34
30
  * NOTE: to include the MarkerClustererPlus icons in the asset pipeline the gem overrides
35
31
  * the original configuration for setting the icon properties. This means that changing
@@ -60,36 +56,34 @@
60
56
  * style the cluster icon is determined by calling the <code>calculator</code> function.
61
57
  *
62
58
  * @property {string} url The URL of the cluster icon image file. Required.
63
- * @property {number} height The height (in pixels) of the cluster icon. Required.
64
- * @property {number} width The width (in pixels) of the cluster icon. Required.
65
- * @property {Array} [anchor] The anchor position (in pixels) of the label text to be shown on
66
- * the cluster icon, relative to the top left corner of the icon.
67
- * The format is <code>[yoffset, xoffset]</code>. The <code>yoffset</code> must be positive
68
- * and less than <code>height</code> and the <code>xoffset</code> must be positive and less
69
- * than <code>width</code>. The default is to anchor the label text so that it is centered
70
- * on the icon.
59
+ * @property {number} height The display height (in pixels) of the cluster icon. Required.
60
+ * @property {number} width The display width (in pixels) of the cluster icon. Required.
61
+ * @property {Array} [anchorText] The position (in pixels) from the center of the cluster icon to
62
+ * where the text label is to be centered and drawn. The format is <code>[yoffset, xoffset]</code>
63
+ * where <code>yoffset</code> increases as you go down from center and <code>xoffset</code>
64
+ * increases to the right of center. The default is <code>[0, 0]</code>.
71
65
  * @property {Array} [anchorIcon] The anchor position (in pixels) of the cluster icon. This is the
72
66
  * spot on the cluster icon that is to be aligned with the cluster position. The format is
73
67
  * <code>[yoffset, xoffset]</code> where <code>yoffset</code> increases as you go down and
74
- * <code>xoffset</code> increases to the right. The default anchor position is the center of the
75
- * cluster icon.
68
+ * <code>xoffset</code> increases to the right of the top-left corner of the icon. The default
69
+ * anchor position is the center of the cluster icon.
76
70
  * @property {string} [textColor="black"] The color of the label text shown on the
77
71
  * cluster icon.
78
72
  * @property {number} [textSize=11] The size (in pixels) of the label text shown on the
79
73
  * cluster icon.
80
- * @property {number} [textDecoration="none"] The value of the CSS <code>text-decoration</code>
74
+ * @property {string} [textDecoration="none"] The value of the CSS <code>text-decoration</code>
81
75
  * property for the label text shown on the cluster icon.
82
- * @property {number} [fontWeight="bold"] The value of the CSS <code>font-weight</code>
76
+ * @property {string} [fontWeight="bold"] The value of the CSS <code>font-weight</code>
83
77
  * property for the label text shown on the cluster icon.
84
- * @property {number} [fontStyle="normal"] The value of the CSS <code>font-style</code>
78
+ * @property {string} [fontStyle="normal"] The value of the CSS <code>font-style</code>
85
79
  * property for the label text shown on the cluster icon.
86
- * @property {number} [fontFamily="Arial,sans-serif"] The value of the CSS <code>font-family</code>
80
+ * @property {string} [fontFamily="Arial,sans-serif"] The value of the CSS <code>font-family</code>
87
81
  * property for the label text shown on the cluster icon.
88
82
  * @property {string} [backgroundPosition="0 0"] The position of the cluster icon image
89
83
  * within the image defined by <code>url</code>. The format is <code>"xpos ypos"</code>
90
84
  * (the same format as for the CSS <code>background-position</code> property). You must set
91
85
  * this property appropriately when the image defined by <code>url</code> represents a sprite
92
- * containing multiple images.
86
+ * containing multiple images. Note that the position <i>must</i> be specified in px units.
93
87
  */
94
88
  /**
95
89
  * @name ClusterIconInfo
@@ -260,14 +254,24 @@ ClusterIcon.prototype.hide = function () {
260
254
  */
261
255
  ClusterIcon.prototype.show = function () {
262
256
  if (this.div_) {
257
+ var img = "";
258
+ // NOTE: values must be specified in px units
259
+ var bp = this.backgroundPosition_.split(" ");
260
+ var spriteH = parseInt(bp[0].trim(), 10);
261
+ var spriteV = parseInt(bp[1].trim(), 10);
263
262
  var pos = this.getPosFromLatLng_(this.center_);
264
263
  this.div_.style.cssText = this.createCss(pos);
265
- if (this.cluster_.printable_) {
266
- // (Would like to use "width: inherit;" below, but doesn't work with MSIE)
267
- this.div_.innerHTML = "<img src='" + this.url_ + "'><div style='position: absolute; top: 0px; left: 0px; width: " + this.width_ + "px;'>" + this.sums_.text + "</div>";
268
- } else {
269
- this.div_.innerHTML = this.sums_.text;
264
+ img = "<img src='" + this.url_ + "' style='position: absolute; top: " + spriteV + "px; left: " + spriteH + "px; ";
265
+ if (!this.cluster_.getMarkerClusterer().enableRetinaIcons_) {
266
+ img += "clip: rect(" + (-1 * spriteV) + "px, " + ((-1 * spriteH) + this.width_) + "px, " +
267
+ ((-1 * spriteV) + this.height_) + "px, " + (-1 * spriteH) + "px);";
270
268
  }
269
+ img += "'>";
270
+ // (Would like to use "width: inherit;" below, but doesn't work with MSIE)
271
+ this.div_.innerHTML = img + "<div style='position: absolute; " +
272
+ "top: " + this.anchorText_[0] + "px; " +
273
+ "left: " + this.anchorText_[1] + "px; " +
274
+ "width: " + this.width_ + "px;'>" + this.sums_.text + "</div>";
271
275
  if (typeof this.sums_.title === "undefined" || this.sums_.title === "") {
272
276
  this.div_.title = this.cluster_.getMarkerClusterer().getTitle();
273
277
  } else {
@@ -292,7 +296,7 @@ ClusterIcon.prototype.useStyle = function (sums) {
292
296
  this.url_ = style.url;
293
297
  this.height_ = style.height;
294
298
  this.width_ = style.width;
295
- this.anchor_ = style.anchor;
299
+ this.anchorText_ = style.anchorText || [0, 0];
296
300
  this.anchorIcon_ = style.anchorIcon || [parseInt(this.height_ / 2, 10), parseInt(this.width_ / 2, 10)];
297
301
  this.textColor_ = style.textColor || "black";
298
302
  this.textSize_ = style.textSize || 11;
@@ -322,38 +326,13 @@ ClusterIcon.prototype.setCenter = function (center) {
322
326
  */
323
327
  ClusterIcon.prototype.createCss = function (pos) {
324
328
  var style = [];
325
- if (!this.cluster_.printable_) {
326
- style.push('background-image:url(' + this.url_ + ');');
327
- style.push('background-position:' + this.backgroundPosition_ + ';');
328
- }
329
-
330
- if (typeof this.anchor_ === 'object') {
331
- if (typeof this.anchor_[0] === 'number' && this.anchor_[0] > 0 &&
332
- this.anchor_[0] < this.height_) {
333
- style.push('height:' + (this.height_ - this.anchor_[0]) +
334
- 'px; padding-top:' + this.anchor_[0] + 'px;');
335
- } else {
336
- style.push('height:' + this.height_ + 'px; line-height:' + this.height_ +
337
- 'px;');
338
- }
339
- if (typeof this.anchor_[1] === 'number' && this.anchor_[1] > 0 &&
340
- this.anchor_[1] < this.width_) {
341
- style.push('width:' + (this.width_ - this.anchor_[1]) +
342
- 'px; padding-left:' + this.anchor_[1] + 'px;');
343
- } else {
344
- style.push('width:' + this.width_ + 'px; text-align:center;');
345
- }
346
- } else {
347
- style.push('height:' + this.height_ + 'px; line-height:' +
348
- this.height_ + 'px; width:' + this.width_ + 'px; text-align:center;');
349
- }
350
-
329
+ style.push('width:' + this.width_ + 'px; height:' + this.height_ + 'px;');
330
+ style.push('text-align:center; line-height:' + this.height_ + 'px;');
351
331
  style.push('cursor:pointer; top:' + pos.y + 'px; left:' +
352
332
  pos.x + 'px; color:' + this.textColor_ + '; position:absolute; font-size:' +
353
333
  this.textSize_ + 'px; font-family:' + this.fontFamily_ + '; font-weight:' +
354
334
  this.fontWeight_ + '; font-style:' + this.fontStyle_ + '; text-decoration:' +
355
335
  this.textDecoration_ + ';');
356
-
357
336
  return style.join("");
358
337
  };
359
338
 
@@ -368,6 +347,8 @@ ClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {
368
347
  var pos = this.getProjection().fromLatLngToDivPixel(latlng);
369
348
  pos.x -= this.anchorIcon_[1];
370
349
  pos.y -= this.anchorIcon_[0];
350
+ pos.x = parseInt(pos.x, 10);
351
+ pos.y = parseInt(pos.y, 10);
371
352
  return pos;
372
353
  };
373
354
 
@@ -385,7 +366,6 @@ function Cluster(mc) {
385
366
  this.gridSize_ = mc.getGridSize();
386
367
  this.minClusterSize_ = mc.getMinimumClusterSize();
387
368
  this.averageCenter_ = mc.getAverageCenter();
388
- this.printable_ = mc.getPrintable();
389
369
  this.markers_ = [];
390
370
  this.center_ = null;
391
371
  this.bounds_ = null;
@@ -627,9 +607,6 @@ Cluster.prototype.isMarkerAlreadyAdded_ = function (marker) {
627
607
  * <code>text</code> property of the result returned by the default <code>calculator</code>).
628
608
  * If set to <code>true</code> and you change the visibility of a marker being clustered, be
629
609
  * sure to also call <code>MarkerClusterer.repaint()</code>.
630
- * @property {boolean} [printable=false] Whether to make the cluster icons printable. Do not
631
- * set to <code>true</code> if the <code>url</code> fields in the <code>styles</code> array
632
- * refer to image sprite files.
633
610
  * @property {string} [title=""] The tooltip to display when the mouse moves over a cluster
634
611
  * marker. (Alternatively, you can use a custom <code>calculator</code> function to specify a
635
612
  * different tooltip for each cluster marker.)
@@ -658,6 +635,10 @@ Cluster.prototype.isMarkerAlreadyAdded_ = function (marker) {
658
635
  * The default is an array of {@link ClusterIconStyle} elements whose properties are derived
659
636
  * from the values for <code>imagePath</code>, <code>imageExtension</code>, and
660
637
  * <code>imageSizes</code>.
638
+ * @property {boolean} [enableRetinaIcons=false] Whether to allow the use of cluster icons that
639
+ * have sizes that are some multiple (typically double) of their actual display size. Icons such
640
+ * as these look better when viewed on high-resolution monitors such as Apple's Retina displays.
641
+ * Note: if this property is <code>true</code>, sprites cannot be used as cluster icons.
661
642
  * @property {number} [batchSize=MarkerClusterer.BATCH_SIZE] Set this property to the
662
643
  * number of markers to be processed in a single batch when using a browser other than
663
644
  * Internet Explorer (for Internet Explorer, use the batchSizeIE property instead).
@@ -721,9 +702,9 @@ function MarkerClusterer(map, opt_markers, opt_options) {
721
702
  if (opt_options.ignoreHidden !== undefined) {
722
703
  this.ignoreHidden_ = opt_options.ignoreHidden;
723
704
  }
724
- this.printable_ = false;
725
- if (opt_options.printable !== undefined) {
726
- this.printable_ = opt_options.printable;
705
+ this.enableRetinaIcons_ = false;
706
+ if (opt_options.enableRetinaIcons !== undefined) {
707
+ this.enableRetinaIcons_ = opt_options.enableRetinaIcons;
727
708
  }
728
709
  this.imagePath_ = opt_options.imagePath || MarkerClusterer.IMAGE_PATH;
729
710
  this.imageExtension_ = opt_options.imageExtension || MarkerClusterer.IMAGE_EXTENSION;
@@ -1020,6 +1001,26 @@ MarkerClusterer.prototype.setIgnoreHidden = function (ignoreHidden) {
1020
1001
  };
1021
1002
 
1022
1003
 
1004
+ /**
1005
+ * Returns the value of the <code>enableRetinaIcons</code> property.
1006
+ *
1007
+ * @return {boolean} True if enableRetinaIcons property is set.
1008
+ */
1009
+ MarkerClusterer.prototype.getEnableRetinaIcons = function () {
1010
+ return this.enableRetinaIcons_;
1011
+ };
1012
+
1013
+
1014
+ /**
1015
+ * Sets the value of the <code>enableRetinaIcons</code> property.
1016
+ *
1017
+ * @param {boolean} enableRetinaIcons The value of the enableRetinaIcons property.
1018
+ */
1019
+ MarkerClusterer.prototype.setEnableRetinaIcons = function (enableRetinaIcons) {
1020
+ this.enableRetinaIcons_ = enableRetinaIcons;
1021
+ };
1022
+
1023
+
1023
1024
  /**
1024
1025
  * Returns the value of the <code>imageExtension</code> property.
1025
1026
  *
@@ -1101,26 +1102,6 @@ MarkerClusterer.prototype.setCalculator = function (calculator) {
1101
1102
  };
1102
1103
 
1103
1104
 
1104
- /**
1105
- * Returns the value of the <code>printable</code> property.
1106
- *
1107
- * @return {boolean} the value of the printable property.
1108
- */
1109
- MarkerClusterer.prototype.getPrintable = function () {
1110
- return this.printable_;
1111
- };
1112
-
1113
-
1114
- /**
1115
- * Sets the value of the <code>printable</code> property.
1116
- *
1117
- * @param {boolean} printable The value of the printable property.
1118
- */
1119
- MarkerClusterer.prototype.setPrintable = function (printable) {
1120
- this.printable_ = printable;
1121
- };
1122
-
1123
-
1124
1105
  /**
1125
1106
  * Returns the value of the <code>batchSizeIE</code> property.
1126
1107
  *
@@ -1,5 +1,5 @@
1
1
  module Markerclustererplus
2
2
  module Rails
3
- VERSION = "2.0.16.1"
3
+ VERSION = "2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: markerclustererplus-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.16.1
4
+ version: '2.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - RogerE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-10 00:00:00.000000000 Z
11
+ date: 2013-11-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This gem provides the MarkerClustererPlus assets for your Rails application.
14
14
  email: