leaflet-js 0.6.beta4 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (226) hide show
  1. checksums.yaml +6 -14
  2. data/CHANGELOG.rdoc +3 -0
  3. data/leaflet-js.gemspec +2 -2
  4. data/lib/leaflet.draw/CHANGELOG.md +45 -0
  5. data/lib/leaflet.draw/README.md +70 -23
  6. data/lib/leaflet.draw/build/deps.js +1 -0
  7. data/lib/leaflet.draw/dist/images/spritesheet-2x.png +0 -0
  8. data/lib/leaflet.draw/dist/images/spritesheet.png +0 -0
  9. data/lib/leaflet.draw/dist/leaflet.draw-src.js +489 -136
  10. data/lib/leaflet.draw/dist/leaflet.draw.css +34 -2
  11. data/lib/leaflet.draw/dist/leaflet.draw.ie.css +5 -0
  12. data/lib/leaflet.draw/dist/leaflet.draw.js +2 -2
  13. data/lib/leaflet.draw/examples/basic.html +14 -7
  14. data/lib/leaflet.draw/examples/libs/images/layers-2x.png +0 -0
  15. data/lib/leaflet.draw/examples/libs/images/layers.png +0 -0
  16. data/lib/leaflet.draw/examples/libs/images/marker-icon-2x.png +0 -0
  17. data/lib/leaflet.draw/examples/libs/leaflet-src.js +1129 -608
  18. data/lib/leaflet.draw/examples/libs/leaflet.css +85 -66
  19. data/lib/leaflet.draw/package.json +2 -2
  20. data/lib/leaflet.draw/spec/suites/DrawControlSpec.js +1 -1
  21. data/lib/leaflet.draw/spec/suites/GeometryUtilSpec.js +25 -0
  22. data/lib/leaflet.draw/spec/suites/LatLngUtilSpec.js +9 -0
  23. data/lib/leaflet.draw/src/Control.Draw.js +1 -0
  24. data/lib/leaflet.draw/src/Leaflet.draw.js +89 -1
  25. data/lib/leaflet.draw/src/Toolbar.js +2 -6
  26. data/lib/leaflet.draw/src/Tooltip.js +20 -7
  27. data/lib/leaflet.draw/src/draw/DrawToolbar.js +26 -22
  28. data/lib/leaflet.draw/src/draw/handler/Draw.Circle.js +11 -6
  29. data/lib/leaflet.draw/src/draw/handler/Draw.Feature.js +6 -2
  30. data/lib/leaflet.draw/src/draw/handler/Draw.Marker.js +7 -2
  31. data/lib/leaflet.draw/src/draw/handler/Draw.Polygon.js +29 -7
  32. data/lib/leaflet.draw/src/draw/handler/Draw.Polyline.js +44 -21
  33. data/lib/leaflet.draw/src/draw/handler/Draw.Rectangle.js +3 -3
  34. data/lib/leaflet.draw/src/draw/handler/Draw.SimpleShape.js +14 -1
  35. data/lib/leaflet.draw/src/edit/EditToolbar.js +86 -16
  36. data/lib/leaflet.draw/src/edit/handler/Edit.Poly.js +10 -7
  37. data/lib/leaflet.draw/src/edit/handler/Edit.SimpleShape.js +1 -2
  38. data/lib/leaflet.draw/src/edit/handler/EditToolbar.Delete.js +15 -3
  39. data/lib/leaflet.draw/src/edit/handler/EditToolbar.Edit.js +56 -38
  40. data/lib/leaflet.draw/src/ext/GeometryUtil.js +68 -0
  41. data/lib/leaflet.draw/src/images/spritesheet.svg +41 -0
  42. data/lib/leaflet.label/CHANGELOG.md +32 -0
  43. data/lib/leaflet.label/README.md +21 -4
  44. data/lib/leaflet.label/build/build.js +2 -2
  45. data/lib/leaflet.label/build/deps.js +2 -0
  46. data/lib/leaflet.label/build/hintrc.js +4 -0
  47. data/lib/leaflet.label/dist/leaflet.label-src.js +266 -83
  48. data/lib/leaflet.label/dist/leaflet.label.css +23 -4
  49. data/lib/leaflet.label/dist/leaflet.label.js +1 -1
  50. data/lib/leaflet.label/example/label.html +6 -3
  51. data/lib/leaflet.label/libs/leaflet/images/layers-2x.png +0 -0
  52. data/lib/leaflet.label/libs/leaflet/images/layers.png +0 -0
  53. data/lib/leaflet.label/libs/leaflet/images/marker-icon-2x.png +0 -0
  54. data/lib/leaflet.label/libs/leaflet/leaflet-src.js +1129 -608
  55. data/lib/leaflet.label/libs/leaflet/leaflet.css +85 -66
  56. data/lib/leaflet.label/libs/leaflet/leaflet.js +6 -5
  57. data/lib/leaflet.label/package.json +19 -0
  58. data/lib/leaflet.label/src/BaseMarkerMethods.js +129 -0
  59. data/lib/leaflet.label/src/CircleMarker.Label.js +7 -0
  60. data/lib/leaflet.label/src/Label.js +161 -37
  61. data/lib/leaflet.label/src/Leaflet.label.js +1 -1
  62. data/lib/leaflet.label/src/Map.Label.js +0 -2
  63. data/lib/leaflet.label/src/Marker.Label.js +15 -120
  64. data/lib/leaflet.label/src/Path.Label.js +11 -11
  65. data/lib/leaflet/CHANGELOG.md +299 -31
  66. data/lib/leaflet/CONTRIBUTING.md +3 -3
  67. data/lib/leaflet/FAQ.md +138 -0
  68. data/lib/leaflet/Jakefile.js +24 -4
  69. data/lib/leaflet/PLUGIN-GUIDE.md +127 -0
  70. data/lib/leaflet/README.md +10 -6
  71. data/lib/leaflet/build/build.html +3 -19
  72. data/lib/leaflet/build/build.js +21 -51
  73. data/lib/leaflet/build/deps.js +10 -7
  74. data/lib/leaflet/build/hintrc.js +6 -4
  75. data/lib/leaflet/debug/hacks/jitter.html +0 -1
  76. data/lib/leaflet/debug/map/canvas.html +11 -12
  77. data/lib/leaflet/debug/map/controls.html +3 -4
  78. data/lib/leaflet/debug/map/geolocation.html +0 -1
  79. data/lib/leaflet/debug/map/iframe.html +11 -0
  80. data/lib/leaflet/debug/map/image-overlay.html +0 -1
  81. data/lib/leaflet/debug/map/map-mobile.html +0 -1
  82. data/lib/leaflet/debug/map/map.html +1 -2
  83. data/lib/leaflet/debug/map/max-bounds.html +2 -1
  84. data/lib/leaflet/debug/map/opacity.html +223 -0
  85. data/lib/leaflet/debug/map/scroll.html +6 -1
  86. data/lib/leaflet/debug/map/simple-proj.html +0 -1
  87. data/lib/leaflet/debug/map/wms-marble.html +4 -5
  88. data/lib/leaflet/debug/map/wms.html +0 -1
  89. data/lib/leaflet/debug/map/zoomlevels.html +0 -1
  90. data/lib/leaflet/debug/tests/add_remove_layers.html +5 -6
  91. data/lib/leaflet/debug/tests/bringtoback.html +0 -1
  92. data/lib/leaflet/debug/tests/canvasloop.html +47 -0
  93. data/lib/leaflet/debug/tests/click_on_canvas.html +0 -1
  94. data/lib/leaflet/debug/tests/dragging_and_copyworldjump.html +61 -0
  95. data/lib/leaflet/debug/tests/opacity.html +0 -1
  96. data/lib/leaflet/debug/tests/popupcontextmenuclicks.html +59 -0
  97. data/lib/leaflet/debug/tests/remove_while_dragging.html +4 -5
  98. data/lib/leaflet/debug/tests/removetilewhilepan.html +0 -1
  99. data/lib/leaflet/debug/tests/reuse_popups.html +0 -1
  100. data/lib/leaflet/debug/tests/rtl.html +42 -0
  101. data/lib/leaflet/debug/tests/rtl2.html +27 -0
  102. data/lib/leaflet/debug/tests/set_icon_reuse_dom.html +43 -0
  103. data/lib/leaflet/debug/tests/svg_clicks.html +3 -4
  104. data/lib/leaflet/debug/vector/bounds-extend.html +0 -1
  105. data/lib/leaflet/debug/vector/feature-group-bounds.html +0 -1
  106. data/lib/leaflet/debug/vector/geojson.html +0 -1
  107. data/lib/leaflet/debug/vector/rectangle.html +0 -1
  108. data/lib/leaflet/debug/vector/touchzoomemu.html +2 -3
  109. data/lib/leaflet/debug/vector/vector-bounds.html +0 -1
  110. data/lib/leaflet/debug/vector/vector-canvas.html +0 -1
  111. data/lib/leaflet/debug/vector/vector-mobile.html +0 -1
  112. data/lib/leaflet/debug/vector/vector-simple.html +0 -1
  113. data/lib/leaflet/debug/vector/vector.html +0 -1
  114. data/lib/leaflet/dist/images/layers-2x.png +0 -0
  115. data/lib/leaflet/dist/images/layers.png +0 -0
  116. data/lib/leaflet/dist/leaflet.css +85 -66
  117. data/lib/leaflet/package.json +25 -20
  118. data/lib/leaflet/spec/after.js +1 -1
  119. data/lib/leaflet/spec/index.html +21 -13
  120. data/lib/leaflet/spec/karma.conf.js +51 -50
  121. data/lib/leaflet/spec/spec.hintrc.js +25 -0
  122. data/lib/leaflet/spec/suites/LeafletSpec.js +2 -2
  123. data/lib/leaflet/spec/suites/SpecHelper.js +37 -21
  124. data/lib/leaflet/spec/suites/control/Control.LayersSpec.js +1 -1
  125. data/lib/leaflet/spec/suites/core/ClassSpec.js +12 -12
  126. data/lib/leaflet/spec/suites/core/EventsSpec.js +74 -18
  127. data/lib/leaflet/spec/suites/core/UtilSpec.js +69 -25
  128. data/lib/leaflet/spec/suites/dom/DomEventSpec.js +16 -16
  129. data/lib/leaflet/spec/suites/dom/DomUtilSpec.js +9 -16
  130. data/lib/leaflet/spec/suites/dom/PosAnimationSpec.js +27 -0
  131. data/lib/leaflet/spec/suites/geo/CRSSpec.js +47 -0
  132. data/lib/leaflet/spec/suites/geo/LatLngBoundsSpec.js +22 -14
  133. data/lib/leaflet/spec/suites/geo/LatLngSpec.js +22 -8
  134. data/lib/leaflet/spec/suites/geo/ProjectionSpec.js +21 -20
  135. data/lib/leaflet/spec/suites/geometry/BoundsSpec.js +15 -15
  136. data/lib/leaflet/spec/suites/geometry/PointSpec.js +12 -12
  137. data/lib/leaflet/spec/suites/geometry/TransformationSpec.js +4 -4
  138. data/lib/leaflet/spec/suites/layer/FeatureGroupSpec.js +59 -9
  139. data/lib/leaflet/spec/suites/layer/GeoJSONSpec.js +213 -17
  140. data/lib/leaflet/spec/suites/layer/LayerGroupSpec.js +6 -6
  141. data/lib/leaflet/spec/suites/layer/PopupSpec.js +65 -5
  142. data/lib/leaflet/spec/suites/layer/TileLayerSpec.js +16 -15
  143. data/lib/leaflet/spec/suites/layer/marker/MarkerSpec.js +94 -0
  144. data/lib/leaflet/spec/suites/layer/vector/CircleMarkerSpec.js +7 -7
  145. data/lib/leaflet/spec/suites/layer/vector/PolygonSpec.js +38 -2
  146. data/lib/leaflet/spec/suites/layer/vector/PolylineGeometrySpec.js +4 -4
  147. data/lib/leaflet/spec/suites/layer/vector/PolylineSpec.js +2 -2
  148. data/lib/leaflet/spec/suites/map/MapSpec.js +318 -26
  149. data/lib/leaflet/spec/suites/map/handler/Map.DragSpec.js +38 -0
  150. data/lib/leaflet/src/Leaflet.js +2 -2
  151. data/lib/leaflet/src/control/Control.Attribution.js +6 -0
  152. data/lib/leaflet/src/control/Control.Layers.js +33 -24
  153. data/lib/leaflet/src/control/Control.Zoom.js +12 -4
  154. data/lib/leaflet/src/control/Control.js +10 -0
  155. data/lib/leaflet/src/copyright.js +2 -1
  156. data/lib/leaflet/src/core/Browser.js +11 -10
  157. data/lib/leaflet/src/core/Events.js +15 -11
  158. data/lib/leaflet/src/core/Util.js +19 -14
  159. data/lib/leaflet/src/dom/DomEvent.DoubleTap.js +13 -12
  160. data/lib/leaflet/src/dom/DomEvent.Pointer.js +155 -0
  161. data/lib/leaflet/src/dom/DomEvent.js +57 -19
  162. data/lib/leaflet/src/dom/DomUtil.js +89 -34
  163. data/lib/leaflet/src/dom/Draggable.js +26 -89
  164. data/lib/leaflet/src/dom/PosAnimation.js +13 -2
  165. data/lib/leaflet/src/geo/LatLng.js +16 -5
  166. data/lib/leaflet/src/geo/LatLngBounds.js +5 -2
  167. data/lib/leaflet/src/geo/crs/CRS.EPSG3395.js +2 -2
  168. data/lib/leaflet/src/geo/crs/CRS.js +5 -0
  169. data/lib/leaflet/src/geo/projection/Projection.Mercator.js +3 -3
  170. data/lib/leaflet/src/geometry/LineUtil.js +2 -2
  171. data/lib/leaflet/src/images/layers.svg +8 -0
  172. data/lib/leaflet/src/images/marker.svg +61 -1
  173. data/lib/leaflet/src/layer/FeatureGroup.js +24 -7
  174. data/lib/leaflet/src/layer/GeoJSON.js +97 -56
  175. data/lib/leaflet/src/layer/ImageOverlay.js +9 -0
  176. data/lib/leaflet/src/layer/LayerGroup.js +8 -3
  177. data/lib/leaflet/src/layer/Popup.js +56 -34
  178. data/lib/leaflet/src/layer/marker/DivIcon.js +4 -2
  179. data/lib/leaflet/src/layer/marker/Icon.Default.js +1 -1
  180. data/lib/leaflet/src/layer/marker/Icon.js +15 -18
  181. data/lib/leaflet/src/layer/marker/Marker.Drag.js +7 -5
  182. data/lib/leaflet/src/layer/marker/Marker.Popup.js +22 -5
  183. data/lib/leaflet/src/layer/marker/Marker.js +75 -32
  184. data/lib/leaflet/src/layer/tile/TileLayer.Anim.js +14 -26
  185. data/lib/leaflet/src/layer/tile/TileLayer.Canvas.js +7 -6
  186. data/lib/leaflet/src/layer/tile/TileLayer.WMS.js +14 -10
  187. data/lib/leaflet/src/layer/tile/TileLayer.js +53 -32
  188. data/lib/leaflet/src/layer/vector/CircleMarker.js +11 -0
  189. data/lib/leaflet/src/layer/vector/MultiPoly.js +10 -0
  190. data/lib/leaflet/src/layer/vector/Path.SVG.js +14 -3
  191. data/lib/leaflet/src/layer/vector/Path.VML.js +12 -2
  192. data/lib/leaflet/src/layer/vector/Path.js +7 -3
  193. data/lib/leaflet/src/layer/vector/Polygon.js +14 -3
  194. data/lib/leaflet/src/layer/vector/canvas/CircleMarker.Canvas.js +9 -0
  195. data/lib/leaflet/src/layer/vector/canvas/Path.Canvas.js +1 -0
  196. data/lib/leaflet/src/map/Map.js +192 -125
  197. data/lib/leaflet/src/map/anim/Map.PanAnimation.js +29 -19
  198. data/lib/leaflet/src/map/anim/Map.ZoomAnimation.js +21 -9
  199. data/lib/leaflet/src/map/ext/Map.Geolocation.js +11 -4
  200. data/lib/leaflet/src/map/handler/Map.BoxZoom.js +26 -12
  201. data/lib/leaflet/src/map/handler/Map.DoubleClickZoom.js +10 -3
  202. data/lib/leaflet/src/map/handler/Map.Drag.js +12 -6
  203. data/lib/leaflet/src/map/handler/Map.Keyboard.js +5 -2
  204. data/lib/leaflet/src/map/handler/Map.ScrollWheelZoom.js +7 -1
  205. data/lib/leaflet/src/map/handler/Map.Tap.js +107 -0
  206. data/lib/leaflet/src/map/handler/Map.TouchZoom.js +9 -3
  207. data/vendor/assets/images/layers-2x.png +0 -0
  208. data/vendor/assets/images/layers.png +0 -0
  209. data/vendor/assets/images/spritesheet-2x.png +0 -0
  210. data/vendor/assets/images/spritesheet.png +0 -0
  211. data/vendor/assets/javascripts/leaflet.draw.js +2 -4
  212. data/vendor/assets/javascripts/leaflet.js +3 -1
  213. data/vendor/assets/javascripts/leaflet.label.js +2 -0
  214. data/vendor/assets/stylesheets/leaflet.css.erb +337 -318
  215. data/vendor/assets/stylesheets/leaflet.draw.css.erb +35 -3
  216. data/vendor/assets/stylesheets/leaflet.draw.ie.css +5 -0
  217. data/vendor/assets/stylesheets/leaflet.label.css +23 -4
  218. metadata +40 -14
  219. data/lib/leaflet.draw/examples/libs/leaflet.ie.css +0 -51
  220. data/lib/leaflet.label/libs/leaflet/leaflet.ie.css +0 -51
  221. data/lib/leaflet/dist/leaflet-src.js +0 -8579
  222. data/lib/leaflet/dist/leaflet.ie.css +0 -51
  223. data/lib/leaflet/dist/leaflet.js +0 -8
  224. data/lib/leaflet/spec/happen.js +0 -93
  225. data/lib/leaflet/src/dom/DomEvent.MsTouch.js +0 -146
  226. data/vendor/assets/stylesheets/leaflet.ie.css +0 -51
@@ -0,0 +1,7 @@
1
+ // Add in an option to icon that is used to set where the label anchor is
2
+ L.CircleMarker.mergeOptions({
3
+ labelAnchor: new L.Point(0, 0)
4
+ });
5
+
6
+
7
+ L.CircleMarker.include(L.BaseMarkerMethods);
@@ -1,11 +1,23 @@
1
- L.Label = L.Popup.extend({
1
+ L.Label = L.Class.extend({
2
+
3
+ includes: L.Mixin.Events,
4
+
2
5
  options: {
3
- autoPan: false,
4
6
  className: '',
5
- closePopupOnClick: false,
7
+ clickable: false,
8
+ direction: 'right',
6
9
  noHide: false,
7
- offset: new L.Point(12, -15), // 6 (width of the label triangle) + 6 (padding)
8
- opacity: 1
10
+ offset: [12, -15], // 6 (width of the label triangle) + 6 (padding)
11
+ opacity: 1,
12
+ zoomAnimation: true
13
+ },
14
+
15
+ initialize: function (options, source) {
16
+ L.setOptions(this, options);
17
+
18
+ this._source = source;
19
+ this._animated = L.Browser.any3d && this.options.zoomAnimation;
20
+ this._isOpen = false;
9
21
  },
10
22
 
11
23
  onAdd: function (map) {
@@ -16,16 +28,18 @@ L.Label = L.Popup.extend({
16
28
  if (!this._container) {
17
29
  this._initLayout();
18
30
  }
19
- this._updateContent();
20
-
21
- var animFade = map.options.fadeAnimation;
22
31
 
23
- if (animFade) {
24
- L.DomUtil.setOpacity(this._container, 0);
25
- }
26
32
  this._pane.appendChild(this._container);
27
33
 
28
- map.on('viewreset', this._updatePosition, this);
34
+ this._initInteraction();
35
+
36
+ this._update();
37
+
38
+ this.setOpacity(this.options.opacity);
39
+
40
+ map
41
+ .on('moveend', this._onMoveEnd, this)
42
+ .on('viewreset', this._onViewReset, this);
29
43
 
30
44
  if (this._animated) {
31
45
  map.on('zoomanim', this._zoomAnimation, this);
@@ -34,37 +48,47 @@ L.Label = L.Popup.extend({
34
48
  if (L.Browser.touch && !this.options.noHide) {
35
49
  L.DomEvent.on(this._container, 'click', this.close, this);
36
50
  }
37
-
38
- this._update();
39
-
40
- this.setOpacity(this.options.opacity);
41
51
  },
42
52
 
43
53
  onRemove: function (map) {
44
54
  this._pane.removeChild(this._container);
45
55
 
46
- L.Util.falseFn(this._container.offsetWidth); // force reflow
47
-
48
56
  map.off({
49
- viewreset: this._updatePosition,
50
- zoomanim: this._zoomAnimation
57
+ zoomanim: this._zoomAnimation,
58
+ moveend: this._onMoveEnd,
59
+ viewreset: this._onViewReset
51
60
  }, this);
52
61
 
53
- if (map.options.fadeAnimation) {
54
- L.DomUtil.setOpacity(this._container, 0);
55
- }
62
+ this._removeInteraction();
56
63
 
57
64
  this._map = null;
58
65
  },
59
66
 
67
+ setLatLng: function (latlng) {
68
+ this._latlng = L.latLng(latlng);
69
+ if (this._map) {
70
+ this._updatePosition();
71
+ }
72
+ return this;
73
+ },
74
+
75
+ setContent: function (content) {
76
+ // Backup previous content and store new content
77
+ this._previousContent = this._content;
78
+ this._content = content;
79
+
80
+ this._updateContent();
81
+
82
+ return this;
83
+ },
84
+
60
85
  close: function () {
61
86
  var map = this._map;
62
- if (L.Browser.touch && !this.options.noHide) {
63
- L.DomEvent.off(this._container, 'click', this.close);
64
- }
65
87
 
66
88
  if (map) {
67
- map._label = null;
89
+ if (L.Browser.touch && !this.options.noHide) {
90
+ L.DomEvent.off(this._container, 'click', this.close);
91
+ }
68
92
 
69
93
  map.removeLayer(this);
70
94
  }
@@ -73,7 +97,7 @@ L.Label = L.Popup.extend({
73
97
  updateZIndex: function (zIndex) {
74
98
  this._zIndex = zIndex;
75
99
 
76
- if (this._container) {
100
+ if (this._container && this._zIndex) {
77
101
  this._container.style.zIndex = zIndex;
78
102
  }
79
103
  },
@@ -91,16 +115,29 @@ L.Label = L.Popup.extend({
91
115
  this.updateZIndex(this._zIndex);
92
116
  },
93
117
 
118
+ _update: function () {
119
+ if (!this._map) { return; }
120
+
121
+ this._container.style.visibility = 'hidden';
122
+
123
+ this._updateContent();
124
+ this._updatePosition();
125
+
126
+ this._container.style.visibility = '';
127
+ },
128
+
94
129
  _updateContent: function () {
95
- if (!this._content) { return; }
130
+ if (!this._content || !this._map || this._prevContent === this._content) {
131
+ return;
132
+ }
96
133
 
97
134
  if (typeof this._content === 'string') {
98
135
  this._container.innerHTML = this._content;
99
- }
100
- },
101
136
 
102
- _updateLayout: function () {
103
- // Do nothing
137
+ this._prevContent = this._content;
138
+
139
+ this._labelWidth = this._container.offsetWidth;
140
+ }
104
141
  },
105
142
 
106
143
  _updatePosition: function () {
@@ -110,14 +147,101 @@ L.Label = L.Popup.extend({
110
147
  },
111
148
 
112
149
  _setPosition: function (pos) {
113
- pos = pos.add(this.options.offset);
150
+ var map = this._map,
151
+ container = this._container,
152
+ centerPoint = map.latLngToContainerPoint(map.getCenter()),
153
+ labelPoint = map.layerPointToContainerPoint(pos),
154
+ direction = this.options.direction,
155
+ labelWidth = this._labelWidth,
156
+ offset = L.point(this.options.offset);
157
+
158
+ // position to the right (right or auto & needs to)
159
+ if (direction === 'right' || direction === 'auto' && labelPoint.x < centerPoint.x) {
160
+ L.DomUtil.addClass(container, 'leaflet-label-right');
161
+ L.DomUtil.removeClass(container, 'leaflet-label-left');
162
+
163
+ pos = pos.add(offset);
164
+ } else { // position to the left
165
+ L.DomUtil.addClass(container, 'leaflet-label-left');
166
+ L.DomUtil.removeClass(container, 'leaflet-label-right');
167
+
168
+ pos = pos.add(L.point(-offset.x - labelWidth, offset.y));
169
+ }
114
170
 
115
- L.DomUtil.setPosition(this._container, pos);
171
+ L.DomUtil.setPosition(container, pos);
116
172
  },
117
173
 
118
174
  _zoomAnimation: function (opt) {
119
- var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center);
175
+ var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();
120
176
 
121
177
  this._setPosition(pos);
178
+ },
179
+
180
+ _onMoveEnd: function () {
181
+ if (!this._animated || this.options.direction === 'auto') {
182
+ this._updatePosition();
183
+ }
184
+ },
185
+
186
+ _onViewReset: function (e) {
187
+ /* if map resets hard, we must update the label */
188
+ if (e && e.hard) {
189
+ this._update();
190
+ }
191
+ },
192
+
193
+ _initInteraction: function () {
194
+ if (!this.options.clickable) { return; }
195
+
196
+ var container = this._container,
197
+ events = ['dblclick', 'mousedown', 'mouseover', 'mouseout', 'contextmenu'];
198
+
199
+ L.DomUtil.addClass(container, 'leaflet-clickable');
200
+ L.DomEvent.on(container, 'click', this._onMouseClick, this);
201
+
202
+ for (var i = 0; i < events.length; i++) {
203
+ L.DomEvent.on(container, events[i], this._fireMouseEvent, this);
204
+ }
205
+ },
206
+
207
+ _removeInteraction: function () {
208
+ if (!this.options.clickable) { return; }
209
+
210
+ var container = this._container,
211
+ events = ['dblclick', 'mousedown', 'mouseover', 'mouseout', 'contextmenu'];
212
+
213
+ L.DomUtil.removeClass(container, 'leaflet-clickable');
214
+ L.DomEvent.off(container, 'click', this._onMouseClick, this);
215
+
216
+ for (var i = 0; i < events.length; i++) {
217
+ L.DomEvent.off(container, events[i], this._fireMouseEvent, this);
218
+ }
219
+ },
220
+
221
+ _onMouseClick: function (e) {
222
+ if (this.hasEventListeners(e.type)) {
223
+ L.DomEvent.stopPropagation(e);
224
+ }
225
+
226
+ this.fire(e.type, {
227
+ originalEvent: e
228
+ });
229
+ },
230
+
231
+ _fireMouseEvent: function (e) {
232
+ this.fire(e.type, {
233
+ originalEvent: e
234
+ });
235
+
236
+ // TODO proper custom event propagation
237
+ // this line will always be called if marker is in a FeatureGroup
238
+ if (e.type === 'contextmenu' && this.hasEventListeners(e.type)) {
239
+ L.DomEvent.preventDefault(e);
240
+ }
241
+ if (e.type !== 'mousedown') {
242
+ L.DomEvent.stopPropagation(e);
243
+ } else {
244
+ L.DomEvent.preventDefault(e);
245
+ }
122
246
  }
123
- });
247
+ });
@@ -2,4 +2,4 @@
2
2
  * Leaflet.label assumes that you have already included the Leaflet library.
3
3
  */
4
4
 
5
- L.labelVersion = '0.1.2-dev';
5
+ L.labelVersion = '0.2.1-dev';
@@ -1,7 +1,5 @@
1
1
  L.Map.include({
2
2
  showLabel: function (label) {
3
- this._label = label;
4
-
5
3
  return this.addLayer(label);
6
4
  }
7
5
  });
@@ -9,123 +9,8 @@ L.Marker.mergeOptions({
9
9
  icon: new L.Icon.Default()
10
10
  });
11
11
 
12
+ L.Marker.include(L.BaseMarkerMethods);
12
13
  L.Marker.include({
13
- showLabel: function () {
14
- if (this._label && this._map) {
15
- this._label.setLatLng(this._latlng);
16
- this._map.showLabel(this._label);
17
- }
18
-
19
- return this;
20
- },
21
-
22
- hideLabel: function () {
23
- if (this._label) {
24
- this._label.close();
25
- }
26
- return this;
27
- },
28
-
29
- setLabelNoHide: function (noHide) {
30
- if (this._labelNoHide === noHide) {
31
- return;
32
- }
33
-
34
- this._labelNoHide = noHide;
35
-
36
- if (noHide) {
37
- this._removeLabelRevealHandlers();
38
- this.showLabel();
39
- } else {
40
- this._addLabelRevealHandlers();
41
- this.hideLabel();
42
- }
43
- },
44
-
45
- bindLabel: function (content, options) {
46
- var anchor = L.point(this.options.icon.options.labelAnchor) || new L.Point(0, 0);
47
-
48
- anchor = anchor.add(L.Label.prototype.options.offset);
49
-
50
- if (options && options.offset) {
51
- anchor = anchor.add(options.offset);
52
- }
53
-
54
- options = L.Util.extend({offset: anchor}, options);
55
-
56
- this._labelNoHide = options.noHide;
57
-
58
- if (!this._label) {
59
- if (!this._labelNoHide) {
60
- this._addLabelRevealHandlers();
61
- }
62
-
63
- this
64
- .on('remove', this.hideLabel, this)
65
- .on('move', this._moveLabel, this);
66
-
67
- this._hasLabelHandlers = true;
68
- }
69
-
70
- this._label = new L.Label(options, this)
71
- .setContent(content);
72
-
73
- return this;
74
- },
75
-
76
- unbindLabel: function () {
77
- if (this._label) {
78
- this.hideLabel();
79
-
80
- this._label = null;
81
-
82
- if (this._hasLabelHandlers) {
83
- if (!this._labelNoHide) {
84
- this._removeLabelRevealHandlers();
85
- }
86
-
87
- this
88
- .off('remove', this.hideLabel, this)
89
- .off('move', this._moveLabel, this);
90
- }
91
-
92
- this._hasLabelHandlers = false;
93
- }
94
- return this;
95
- },
96
-
97
- updateLabelContent: function (content) {
98
- if (this._label) {
99
- this._label.setContent(content);
100
- }
101
- },
102
-
103
- _addLabelRevealHandlers: function () {
104
- this
105
- .on('mouseover', this.showLabel, this)
106
- .on('mouseout', this.hideLabel, this);
107
-
108
- if (L.Browser.touch) {
109
- this.on('click', this.showLabel, this);
110
- }
111
- },
112
-
113
- _removeLabelRevealHandlers: function () {
114
- this
115
- .off('mouseover', this.showLabel, this)
116
- .off('mouseout', this.hideLabel, this)
117
- .off('remove', this.hideLabel, this)
118
- .off('move', this._moveLabel, this);
119
-
120
- if (L.Browser.touch) {
121
- this.off('click', this.showLabel, this);
122
- }
123
- },
124
-
125
- _moveLabel: function (e) {
126
- this._label.setLatLng(e.latlng);
127
- },
128
-
129
14
  _originalUpdateZIndex: L.Marker.prototype._updateZIndex,
130
15
 
131
16
  _updateZIndex: function (offset) {
@@ -133,8 +18,8 @@ L.Marker.include({
133
18
 
134
19
  this._originalUpdateZIndex(offset);
135
20
 
136
- if (this._label) {
137
- this._label.updateZIndex(zIndex);
21
+ if (this.label) {
22
+ this.label.updateZIndex(zIndex);
138
23
  }
139
24
  },
140
25
 
@@ -153,8 +38,18 @@ L.Marker.include({
153
38
 
154
39
  this._originalUpdateOpacity();
155
40
 
156
- if (this._label) {
157
- this._label.setOpacity(this.options.labelHasSemiTransparency ? this.options.opacity : absoluteOpacity);
41
+ if (this.label) {
42
+ this.label.setOpacity(this.options.labelHasSemiTransparency ? this.options.opacity : absoluteOpacity);
158
43
  }
44
+ },
45
+
46
+ _originalSetLatLng: L.Marker.prototype.setLatLng,
47
+
48
+ setLatLng: function (latlng) {
49
+ if (this.label && !this._labelNoHide) {
50
+ this.hideLabel();
51
+ }
52
+
53
+ return this._originalSetLatLng(latlng);
159
54
  }
160
55
  });
@@ -1,10 +1,10 @@
1
1
  L.Path.include({
2
2
  bindLabel: function (content, options) {
3
- if (!this._label || this._label.options !== options) {
4
- this._label = new L.Label(options, this);
3
+ if (!this.label || this.label.options !== options) {
4
+ this.label = new L.Label(options, this);
5
5
  }
6
6
 
7
- this._label.setContent(content);
7
+ this.label.setContent(content);
8
8
 
9
9
  if (!this._showLabelAdded) {
10
10
  this
@@ -22,9 +22,9 @@ L.Path.include({
22
22
  },
23
23
 
24
24
  unbindLabel: function () {
25
- if (this._label) {
25
+ if (this.label) {
26
26
  this._hideLabel();
27
- this._label = null;
27
+ this.label = null;
28
28
  this._showLabelAdded = false;
29
29
  this
30
30
  .off('mouseover', this._showLabel, this)
@@ -35,21 +35,21 @@ L.Path.include({
35
35
  },
36
36
 
37
37
  updateLabelContent: function (content) {
38
- if (this._label) {
39
- this._label.setContent(content);
38
+ if (this.label) {
39
+ this.label.setContent(content);
40
40
  }
41
41
  },
42
42
 
43
43
  _showLabel: function (e) {
44
- this._label.setLatLng(e.latlng);
45
- this._map.showLabel(this._label);
44
+ this.label.setLatLng(e.latlng);
45
+ this._map.showLabel(this.label);
46
46
  },
47
47
 
48
48
  _moveLabel: function (e) {
49
- this._label.setLatLng(e.latlng);
49
+ this.label.setLatLng(e.latlng);
50
50
  },
51
51
 
52
52
  _hideLabel: function () {
53
- this._label.close();
53
+ this.label.close();
54
54
  }
55
55
  });