markerclustererplus-rails 2.0.16.1 → 2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: