leaflet-rails 0.7.4 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -6
- data/leaflet-rails.gemspec +6 -7
- data/lib/leaflet-rails/version.rb +1 -1
- data/lib/leaflet-rails/view_helpers.rb +9 -9
- data/vendor/assets/javascripts/leaflet.js.erb +33 -50
- data/vendor/assets/stylesheets/leaflet.css.erb +293 -290
- metadata +13 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2eb78713472675e95e253b537d1546f4544ebd9
|
4
|
+
data.tar.gz: e35af587a0284da1b5c60143fb8970864c547d1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a644f995dedb93ce3a620f8688c3cfb078b14030ee50b53b5794660761fbeed0d7de8bdcbe4c9ce56f068c0d3197b94da50a538c2a41989a651b6b496a0e7d66
|
7
|
+
data.tar.gz: 2fbda3b24c04f36bbdac8aed3b05f72fa8ad576996fe3f19c6ec79a409a01fdd0a5fbf258560d4c91499512f0b12a26f7443e71b63dcd42e217605ce6cb028db
|
data/README.md
CHANGED
@@ -44,6 +44,7 @@ leaflet-rails tries to keep version parity with leaflet.js. However, this isn't
|
|
44
44
|
| leaflet-rails | leaflet.js | Reason |
|
45
45
|
| ------------- | ------------- | ------|
|
46
46
|
| 0.7.4 | 0.7.3 | Requested in #33 because of large gap between master and rubygems.org.|
|
47
|
+
| 0.7.5 | 0.7.5 | leaflet.js 0.7.4 was reverted. |
|
47
48
|
|
48
49
|
|
49
50
|
Helpers
|
@@ -67,12 +68,10 @@ Leaflet.subdomains = ['otile1', 'otile2', 'otile3', 'otile4']
|
|
67
68
|
|
68
69
|
You will then be able to call the ```#map``` helper method in a view, and make sure that the helper method is inside an erb tag like so:
|
69
70
|
```ruby
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
}) %>
|
75
|
-
</div>
|
71
|
+
<%= map(:center => {
|
72
|
+
:latlng => [51.52238797921441, -0.08366235665359283],
|
73
|
+
:zoom => 18
|
74
|
+
}) %>
|
76
75
|
```
|
77
76
|
|
78
77
|
You can also add any number of markers like so:
|
data/leaflet-rails.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.email = ["joshi.a@gmail.com"]
|
10
10
|
s.license = "BSD"
|
11
11
|
s.homepage = ""
|
12
|
-
s.summary = %q{Use leaflet.js with Rails
|
13
|
-
s.description = %q{This gem provides the leaflet.js map display library for your Rails
|
12
|
+
s.summary = %q{Use leaflet.js with Rails 4.}
|
13
|
+
s.description = %q{This gem provides the leaflet.js map display library for your Rails 4 application.}
|
14
14
|
|
15
15
|
s.rubyforge_project = "leaflet-rails"
|
16
16
|
|
@@ -19,10 +19,9 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_development_dependency "rspec", '<=
|
22
|
+
s.add_development_dependency "rspec", '<= 3.4.0'
|
23
23
|
s.add_development_dependency "simplecov-rcov"
|
24
|
-
s.add_development_dependency "actionpack", '>=
|
25
|
-
s.add_development_dependency "activesupport", '>=
|
26
|
-
s.add_development_dependency "
|
27
|
-
s.add_development_dependency "railties", '>= 3.2.0'
|
24
|
+
s.add_development_dependency "actionpack", '>= 4.2.0'
|
25
|
+
s.add_development_dependency "activesupport", '>= 4.2.0'
|
26
|
+
s.add_development_dependency "railties", '>= 4.2.0'
|
28
27
|
end
|
@@ -24,23 +24,23 @@ module Leaflet
|
|
24
24
|
output = []
|
25
25
|
output << "<div id='#{container_id}'></div>" unless no_container
|
26
26
|
output << "<script>"
|
27
|
-
output << "var map = L.map('#{container_id}')"
|
27
|
+
output << "var map = L.map('#{container_id}');"
|
28
28
|
|
29
29
|
if center
|
30
|
-
output << "map.setView([#{center[:latlng][0]}, #{center[:latlng][1]}], #{center[:zoom]})"
|
30
|
+
output << "map.setView([#{center[:latlng][0]}, #{center[:latlng][1]}], #{center[:zoom]});"
|
31
31
|
end
|
32
32
|
|
33
33
|
if markers
|
34
34
|
markers.each_with_index do |marker, index|
|
35
35
|
if marker[:icon]
|
36
36
|
icon_settings = prep_icon_settings(marker[:icon])
|
37
|
-
output << "var #{icon_settings[:name]}#{index} = L.icon({iconUrl: '#{icon_settings[:icon_url]}', shadowUrl: '#{icon_settings[:shadow_url]}', iconSize: #{icon_settings[:icon_size]}, shadowSize: #{icon_settings[:shadow_size]}, iconAnchor: #{icon_settings[:icon_anchor]}, shadowAnchor: #{icon_settings[:shadow_anchor]}, popupAnchor: #{icon_settings[:popup_anchor]}})"
|
38
|
-
output << "marker = L.marker([#{marker[:latlng][0]}, #{marker[:latlng][1]}], {icon: #{icon_settings[:name]}#{index}}).addTo(map)"
|
37
|
+
output << "var #{icon_settings[:name]}#{index} = L.icon({iconUrl: '#{icon_settings[:icon_url]}', shadowUrl: '#{icon_settings[:shadow_url]}', iconSize: #{icon_settings[:icon_size]}, shadowSize: #{icon_settings[:shadow_size]}, iconAnchor: #{icon_settings[:icon_anchor]}, shadowAnchor: #{icon_settings[:shadow_anchor]}, popupAnchor: #{icon_settings[:popup_anchor]}});"
|
38
|
+
output << "marker = L.marker([#{marker[:latlng][0]}, #{marker[:latlng][1]}], {icon: #{icon_settings[:name]}#{index}}).addTo(map);"
|
39
39
|
else
|
40
|
-
output << "marker = L.marker([#{marker[:latlng][0]}, #{marker[:latlng][1]}]).addTo(map)"
|
41
|
-
end
|
40
|
+
output << "marker = L.marker([#{marker[:latlng][0]}, #{marker[:latlng][1]}]).addTo(map);"
|
41
|
+
end
|
42
42
|
if marker[:popup]
|
43
|
-
output << "marker.bindPopup('#{marker[:popup]}')"
|
43
|
+
output << "marker.bindPopup('#{marker[:popup]}');"
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -71,7 +71,7 @@ module Leaflet
|
|
71
71
|
output << "L.tileLayer('#{tile_layer}', {
|
72
72
|
attribution: '#{attribution}',
|
73
73
|
maxZoom: #{max_zoom},"
|
74
|
-
|
74
|
+
|
75
75
|
if options[:subdomains]
|
76
76
|
output << " subdomains: #{options[:subdomains]},"
|
77
77
|
options.delete( :subdomains )
|
@@ -80,7 +80,7 @@ module Leaflet
|
|
80
80
|
options.each do |key, value|
|
81
81
|
output << "#{key.to_s.camelize(:lower)}: '#{value}',"
|
82
82
|
end
|
83
|
-
output << "}).addTo(map)"
|
83
|
+
output << "}).addTo(map);"
|
84
84
|
|
85
85
|
output << "</script>"
|
86
86
|
output.join("\n").html_safe
|
@@ -12,7 +12,7 @@
|
|
12
12
|
var oldL = window.L,
|
13
13
|
L = {};
|
14
14
|
|
15
|
-
L.version = '0.7.
|
15
|
+
L.version = '0.7.5';
|
16
16
|
|
17
17
|
// define Leaflet for Node module pattern loaders, including Browserify
|
18
18
|
if (typeof module === 'object' && typeof module.exports === 'object') {
|
@@ -524,8 +524,7 @@ L.Mixin.Events.fire = L.Mixin.Events.fireEvent;
|
|
524
524
|
gecko = ua.indexOf('gecko') !== -1,
|
525
525
|
|
526
526
|
mobile = typeof orientation !== undefined + '',
|
527
|
-
msPointer = window.
|
528
|
-
window.navigator.msMaxTouchPoints && !window.PointerEvent,
|
527
|
+
msPointer = !window.PointerEvent && window.MSPointerEvent,
|
529
528
|
pointer = (window.PointerEvent && window.navigator.pointerEnabled && window.navigator.maxTouchPoints) ||
|
530
529
|
msPointer,
|
531
530
|
retina = ('devicePixelRatio' in window && window.devicePixelRatio > 1) ||
|
@@ -539,38 +538,8 @@ L.Mixin.Events.fire = L.Mixin.Events.fireEvent;
|
|
539
538
|
opera3d = 'OTransition' in doc.style,
|
540
539
|
any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d || opera3d) && !phantomjs;
|
541
540
|
|
542
|
-
|
543
|
-
|
544
|
-
// https://github.com/Leaflet/Leaflet/pull/1434#issuecomment-13843151
|
545
|
-
|
546
|
-
var touch = !window.L_NO_TOUCH && !phantomjs && (function () {
|
547
|
-
|
548
|
-
var startName = 'ontouchstart';
|
549
|
-
|
550
|
-
// IE10+ (We simulate these into touch* events in L.DomEvent and L.DomEvent.Pointer) or WebKit, etc.
|
551
|
-
if (pointer || (startName in doc)) {
|
552
|
-
return true;
|
553
|
-
}
|
554
|
-
|
555
|
-
// Firefox/Gecko
|
556
|
-
var div = document.createElement('div'),
|
557
|
-
supported = false;
|
558
|
-
|
559
|
-
if (!div.setAttribute) {
|
560
|
-
return false;
|
561
|
-
}
|
562
|
-
div.setAttribute(startName, 'return;');
|
563
|
-
|
564
|
-
if (typeof div[startName] === 'function') {
|
565
|
-
supported = true;
|
566
|
-
}
|
567
|
-
|
568
|
-
div.removeAttribute(startName);
|
569
|
-
div = null;
|
570
|
-
|
571
|
-
return supported;
|
572
|
-
}());
|
573
|
-
|
541
|
+
var touch = !window.L_NO_TOUCH && !phantomjs && (pointer || 'ontouchstart' in window ||
|
542
|
+
(window.DocumentTouch && document instanceof window.DocumentTouch));
|
574
543
|
|
575
544
|
L.Browser = {
|
576
545
|
ie: ie,
|
@@ -1637,15 +1606,16 @@ L.Map = L.Class.extend({
|
|
1637
1606
|
var paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]),
|
1638
1607
|
paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]),
|
1639
1608
|
|
1640
|
-
zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR))
|
1641
|
-
|
1609
|
+
zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));
|
1610
|
+
|
1611
|
+
zoom = (options.maxZoom) ? Math.min(options.maxZoom, zoom) : zoom;
|
1612
|
+
|
1613
|
+
var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),
|
1642
1614
|
|
1643
1615
|
swPoint = this.project(bounds.getSouthWest(), zoom),
|
1644
1616
|
nePoint = this.project(bounds.getNorthEast(), zoom),
|
1645
1617
|
center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);
|
1646
1618
|
|
1647
|
-
zoom = options && options.maxZoom ? Math.min(options.maxZoom, zoom) : zoom;
|
1648
|
-
|
1649
1619
|
return this.setView(center, zoom, options);
|
1650
1620
|
},
|
1651
1621
|
|
@@ -2787,7 +2757,7 @@ L.TileLayer = L.Class.extend({
|
|
2787
2757
|
}
|
2788
2758
|
|
2789
2759
|
if (options.bounds) {
|
2790
|
-
var tileSize =
|
2760
|
+
var tileSize = this._getTileSize(),
|
2791
2761
|
nwPoint = tilePoint.multiplyBy(tileSize),
|
2792
2762
|
sePoint = nwPoint.add([tileSize, tileSize]),
|
2793
2763
|
nw = this._map.unproject(nwPoint),
|
@@ -3570,10 +3540,8 @@ L.Marker = L.Class.extend({
|
|
3570
3540
|
|
3571
3541
|
update: function () {
|
3572
3542
|
if (this._icon) {
|
3573
|
-
|
3574
|
-
this._setPos(pos);
|
3543
|
+
this._setPos(this._map.latLngToLayerPoint(this._latlng).round());
|
3575
3544
|
}
|
3576
|
-
|
3577
3545
|
return this;
|
3578
3546
|
},
|
3579
3547
|
|
@@ -4231,6 +4199,7 @@ L.Marker.include({
|
|
4231
4199
|
if (content instanceof L.Popup) {
|
4232
4200
|
L.setOptions(content, options);
|
4233
4201
|
this._popup = content;
|
4202
|
+
content._source = this;
|
4234
4203
|
} else {
|
4235
4204
|
this._popup = new L.Popup(options, this)
|
4236
4205
|
.setContent(content);
|
@@ -5086,7 +5055,7 @@ L.Path = (L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? L.Path :
|
|
5086
5055
|
}
|
5087
5056
|
|
5088
5057
|
this._requestUpdate();
|
5089
|
-
|
5058
|
+
|
5090
5059
|
this.fire('remove');
|
5091
5060
|
this._map = null;
|
5092
5061
|
},
|
@@ -5117,6 +5086,13 @@ L.Path = (L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? L.Path :
|
|
5117
5086
|
if (options.fill) {
|
5118
5087
|
this._ctx.fillStyle = options.fillColor || options.color;
|
5119
5088
|
}
|
5089
|
+
|
5090
|
+
if (options.lineCap) {
|
5091
|
+
this._ctx.lineCap = options.lineCap;
|
5092
|
+
}
|
5093
|
+
if (options.lineJoin) {
|
5094
|
+
this._ctx.lineJoin = options.lineJoin;
|
5095
|
+
}
|
5120
5096
|
},
|
5121
5097
|
|
5122
5098
|
_drawPath: function () {
|
@@ -5154,7 +5130,7 @@ L.Path = (L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? L.Path :
|
|
5154
5130
|
|
5155
5131
|
if (options.fill) {
|
5156
5132
|
ctx.globalAlpha = options.fillOpacity;
|
5157
|
-
ctx.fill();
|
5133
|
+
ctx.fill(options.fillRule || 'evenodd');
|
5158
5134
|
}
|
5159
5135
|
|
5160
5136
|
if (options.stroke) {
|
@@ -5169,15 +5145,14 @@ L.Path = (L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? L.Path :
|
|
5169
5145
|
|
5170
5146
|
_initEvents: function () {
|
5171
5147
|
if (this.options.clickable) {
|
5172
|
-
// TODO dblclick
|
5173
5148
|
this._map.on('mousemove', this._onMouseMove, this);
|
5174
|
-
this._map.on('click', this.
|
5149
|
+
this._map.on('click dblclick contextmenu', this._fireMouseEvent, this);
|
5175
5150
|
}
|
5176
5151
|
},
|
5177
5152
|
|
5178
|
-
|
5153
|
+
_fireMouseEvent: function (e) {
|
5179
5154
|
if (this._containsPoint(e.layerPoint)) {
|
5180
|
-
this.fire(
|
5155
|
+
this.fire(e.type, e);
|
5181
5156
|
}
|
5182
5157
|
},
|
5183
5158
|
|
@@ -8134,7 +8109,7 @@ L.Control.Attribution = L.Control.extend({
|
|
8134
8109
|
this.addAttribution(map._layers[i].getAttribution());
|
8135
8110
|
}
|
8136
8111
|
}
|
8137
|
-
|
8112
|
+
|
8138
8113
|
map
|
8139
8114
|
.on('layeradd', this._onLayerAdd, this)
|
8140
8115
|
.on('layerremove', this._onLayerRemove, this);
|
@@ -8955,10 +8930,13 @@ L.Map.include(!L.DomUtil.TRANSITION ? {} : {
|
|
8955
8930
|
delta: delta,
|
8956
8931
|
backwards: backwards
|
8957
8932
|
});
|
8933
|
+
// horrible hack to work around a Chrome bug https://github.com/Leaflet/Leaflet/issues/3689
|
8934
|
+
setTimeout(L.bind(this._onZoomTransitionEnd, this), 250);
|
8958
8935
|
}, this);
|
8959
8936
|
},
|
8960
8937
|
|
8961
8938
|
_onZoomTransitionEnd: function () {
|
8939
|
+
if (!this._animatingZoom) { return; }
|
8962
8940
|
|
8963
8941
|
this._animatingZoom = false;
|
8964
8942
|
|
@@ -9004,6 +8982,11 @@ L.TileLayer.include({
|
|
9004
8982
|
// force reflow
|
9005
8983
|
L.Util.falseFn(bg.offsetWidth);
|
9006
8984
|
|
8985
|
+
var zoom = this._map.getZoom();
|
8986
|
+
if (zoom > this.options.maxZoom || zoom < this.options.minZoom) {
|
8987
|
+
this._clearBgBuffer();
|
8988
|
+
}
|
8989
|
+
|
9007
8990
|
this._animating = false;
|
9008
8991
|
},
|
9009
8992
|
|
@@ -1,3 +1,6 @@
|
|
1
|
+
//= depend_on_asset "layers.png"
|
2
|
+
//= depend_on_asset "layers-2x.png"
|
3
|
+
|
1
4
|
/* required styles */
|
2
5
|
|
3
6
|
.leaflet-map-pane,
|
@@ -14,49 +17,49 @@
|
|
14
17
|
.leaflet-zoom-box,
|
15
18
|
.leaflet-image-layer,
|
16
19
|
.leaflet-layer {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
position: absolute;
|
21
|
+
left: 0;
|
22
|
+
top: 0;
|
23
|
+
}
|
21
24
|
.leaflet-container {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
overflow: hidden;
|
26
|
+
-ms-touch-action: none;
|
27
|
+
}
|
25
28
|
.leaflet-tile,
|
26
29
|
.leaflet-marker-icon,
|
27
30
|
.leaflet-marker-shadow {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
-webkit-user-select: none;
|
32
|
+
-moz-user-select: none;
|
33
|
+
user-select: none;
|
34
|
+
-webkit-user-drag: none;
|
35
|
+
}
|
33
36
|
.leaflet-marker-icon,
|
34
37
|
.leaflet-marker-shadow {
|
35
|
-
|
36
|
-
|
38
|
+
display: block;
|
39
|
+
}
|
37
40
|
/* map is broken in FF if you have max-width: 100% on tiles */
|
38
41
|
.leaflet-container img {
|
39
|
-
|
40
|
-
|
42
|
+
max-width: none !important;
|
43
|
+
}
|
41
44
|
/* stupid Android 2 doesn't understand "max-width: none" properly */
|
42
45
|
.leaflet-container img.leaflet-image-layer {
|
43
|
-
|
44
|
-
|
46
|
+
max-width: 15000px !important;
|
47
|
+
}
|
45
48
|
.leaflet-tile {
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
+
filter: inherit;
|
50
|
+
visibility: hidden;
|
51
|
+
}
|
49
52
|
.leaflet-tile-loaded {
|
50
|
-
|
51
|
-
|
53
|
+
visibility: inherit;
|
54
|
+
}
|
52
55
|
.leaflet-zoom-box {
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
+
width: 0;
|
57
|
+
height: 0;
|
58
|
+
}
|
56
59
|
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
|
57
60
|
.leaflet-overlay-pane svg {
|
58
|
-
|
59
|
-
|
61
|
+
-moz-user-select: none;
|
62
|
+
}
|
60
63
|
|
61
64
|
.leaflet-tile-pane { z-index: 2; }
|
62
65
|
.leaflet-objects-pane { z-index: 3; }
|
@@ -66,413 +69,413 @@
|
|
66
69
|
.leaflet-popup-pane { z-index: 7; }
|
67
70
|
|
68
71
|
.leaflet-vml-shape {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
width: 1px;
|
73
|
+
height: 1px;
|
74
|
+
}
|
72
75
|
.lvml {
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
76
|
+
behavior: url(#default#VML);
|
77
|
+
display: inline-block;
|
78
|
+
position: absolute;
|
79
|
+
}
|
77
80
|
|
78
81
|
|
79
82
|
/* control positioning */
|
80
83
|
|
81
84
|
.leaflet-control {
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
85
|
+
position: relative;
|
86
|
+
z-index: 7;
|
87
|
+
pointer-events: auto;
|
88
|
+
}
|
86
89
|
.leaflet-top,
|
87
90
|
.leaflet-bottom {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
91
|
+
position: absolute;
|
92
|
+
z-index: 1000;
|
93
|
+
pointer-events: none;
|
94
|
+
}
|
92
95
|
.leaflet-top {
|
93
|
-
|
94
|
-
|
96
|
+
top: 0;
|
97
|
+
}
|
95
98
|
.leaflet-right {
|
96
|
-
|
97
|
-
|
99
|
+
right: 0;
|
100
|
+
}
|
98
101
|
.leaflet-bottom {
|
99
|
-
|
100
|
-
|
102
|
+
bottom: 0;
|
103
|
+
}
|
101
104
|
.leaflet-left {
|
102
|
-
|
103
|
-
|
105
|
+
left: 0;
|
106
|
+
}
|
104
107
|
.leaflet-control {
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
+
float: left;
|
109
|
+
clear: both;
|
110
|
+
}
|
108
111
|
.leaflet-right .leaflet-control {
|
109
|
-
|
110
|
-
|
112
|
+
float: right;
|
113
|
+
}
|
111
114
|
.leaflet-top .leaflet-control {
|
112
|
-
|
113
|
-
|
115
|
+
margin-top: 10px;
|
116
|
+
}
|
114
117
|
.leaflet-bottom .leaflet-control {
|
115
|
-
|
116
|
-
|
118
|
+
margin-bottom: 10px;
|
119
|
+
}
|
117
120
|
.leaflet-left .leaflet-control {
|
118
|
-
|
119
|
-
|
121
|
+
margin-left: 10px;
|
122
|
+
}
|
120
123
|
.leaflet-right .leaflet-control {
|
121
|
-
|
122
|
-
|
124
|
+
margin-right: 10px;
|
125
|
+
}
|
123
126
|
|
124
127
|
|
125
128
|
/* zoom and fade animations */
|
126
129
|
|
127
130
|
.leaflet-fade-anim .leaflet-tile,
|
128
131
|
.leaflet-fade-anim .leaflet-popup {
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
132
|
+
opacity: 0;
|
133
|
+
-webkit-transition: opacity 0.2s linear;
|
134
|
+
-moz-transition: opacity 0.2s linear;
|
135
|
+
-o-transition: opacity 0.2s linear;
|
136
|
+
transition: opacity 0.2s linear;
|
137
|
+
}
|
135
138
|
.leaflet-fade-anim .leaflet-tile-loaded,
|
136
139
|
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
137
|
-
|
138
|
-
|
140
|
+
opacity: 1;
|
141
|
+
}
|
139
142
|
|
140
143
|
.leaflet-zoom-anim .leaflet-zoom-animated {
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
144
|
+
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
145
|
+
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
146
|
+
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
|
147
|
+
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
148
|
+
}
|
146
149
|
.leaflet-zoom-anim .leaflet-tile,
|
147
150
|
.leaflet-pan-anim .leaflet-tile,
|
148
151
|
.leaflet-touching .leaflet-zoom-animated {
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
152
|
+
-webkit-transition: none;
|
153
|
+
-moz-transition: none;
|
154
|
+
-o-transition: none;
|
155
|
+
transition: none;
|
156
|
+
}
|
154
157
|
|
155
158
|
.leaflet-zoom-anim .leaflet-zoom-hide {
|
156
|
-
|
157
|
-
|
159
|
+
visibility: hidden;
|
160
|
+
}
|
158
161
|
|
159
162
|
|
160
163
|
/* cursors */
|
161
164
|
|
162
165
|
.leaflet-clickable {
|
163
|
-
|
164
|
-
|
166
|
+
cursor: pointer;
|
167
|
+
}
|
165
168
|
.leaflet-container {
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
+
cursor: -webkit-grab;
|
170
|
+
cursor: -moz-grab;
|
171
|
+
}
|
169
172
|
.leaflet-popup-pane,
|
170
173
|
.leaflet-control {
|
171
|
-
|
172
|
-
|
174
|
+
cursor: auto;
|
175
|
+
}
|
173
176
|
.leaflet-dragging .leaflet-container,
|
174
177
|
.leaflet-dragging .leaflet-clickable {
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
178
|
+
cursor: move;
|
179
|
+
cursor: -webkit-grabbing;
|
180
|
+
cursor: -moz-grabbing;
|
181
|
+
}
|
179
182
|
|
180
183
|
|
181
184
|
/* visual tweaks */
|
182
185
|
|
183
186
|
.leaflet-container {
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
+
background: #ddd;
|
188
|
+
outline: 0;
|
189
|
+
}
|
187
190
|
.leaflet-container a {
|
188
|
-
|
189
|
-
|
191
|
+
color: #0078A8;
|
192
|
+
}
|
190
193
|
.leaflet-container a.leaflet-active {
|
191
|
-
|
192
|
-
|
194
|
+
outline: 2px solid orange;
|
195
|
+
}
|
193
196
|
.leaflet-zoom-box {
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
+
border: 2px dotted #38f;
|
198
|
+
background: rgba(255,255,255,0.5);
|
199
|
+
}
|
197
200
|
|
198
201
|
|
199
202
|
/* general typography */
|
200
203
|
.leaflet-container {
|
201
|
-
|
202
|
-
|
204
|
+
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
205
|
+
}
|
203
206
|
|
204
207
|
|
205
208
|
/* general toolbar styles */
|
206
209
|
|
207
210
|
.leaflet-bar {
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
+
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
212
|
+
border-radius: 4px;
|
213
|
+
}
|
211
214
|
.leaflet-bar a,
|
212
215
|
.leaflet-bar a:hover {
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
216
|
+
background-color: #fff;
|
217
|
+
border-bottom: 1px solid #ccc;
|
218
|
+
width: 26px;
|
219
|
+
height: 26px;
|
220
|
+
line-height: 26px;
|
221
|
+
display: block;
|
222
|
+
text-align: center;
|
223
|
+
text-decoration: none;
|
224
|
+
color: black;
|
225
|
+
}
|
223
226
|
.leaflet-bar a,
|
224
227
|
.leaflet-control-layers-toggle {
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
228
|
+
background-position: 50% 50%;
|
229
|
+
background-repeat: no-repeat;
|
230
|
+
display: block;
|
231
|
+
}
|
229
232
|
.leaflet-bar a:hover {
|
230
|
-
|
231
|
-
|
233
|
+
background-color: #f4f4f4;
|
234
|
+
}
|
232
235
|
.leaflet-bar a:first-child {
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
+
border-top-left-radius: 4px;
|
237
|
+
border-top-right-radius: 4px;
|
238
|
+
}
|
236
239
|
.leaflet-bar a:last-child {
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
240
|
+
border-bottom-left-radius: 4px;
|
241
|
+
border-bottom-right-radius: 4px;
|
242
|
+
border-bottom: none;
|
243
|
+
}
|
241
244
|
.leaflet-bar a.leaflet-disabled {
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
245
|
+
cursor: default;
|
246
|
+
background-color: #f4f4f4;
|
247
|
+
color: #bbb;
|
248
|
+
}
|
246
249
|
|
247
250
|
.leaflet-touch .leaflet-bar a {
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
251
|
+
width: 30px;
|
252
|
+
height: 30px;
|
253
|
+
line-height: 30px;
|
254
|
+
}
|
252
255
|
|
253
256
|
|
254
257
|
/* zoom control */
|
255
258
|
|
256
259
|
.leaflet-control-zoom-in,
|
257
260
|
.leaflet-control-zoom-out {
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
+
font: bold 18px 'Lucida Console', Monaco, monospace;
|
262
|
+
text-indent: 1px;
|
263
|
+
}
|
261
264
|
.leaflet-control-zoom-out {
|
262
|
-
|
263
|
-
|
265
|
+
font-size: 20px;
|
266
|
+
}
|
264
267
|
|
265
268
|
.leaflet-touch .leaflet-control-zoom-in {
|
266
|
-
|
267
|
-
|
269
|
+
font-size: 22px;
|
270
|
+
}
|
268
271
|
.leaflet-touch .leaflet-control-zoom-out {
|
269
|
-
|
270
|
-
|
272
|
+
font-size: 24px;
|
273
|
+
}
|
271
274
|
|
272
275
|
|
273
276
|
/* layers control */
|
274
277
|
|
275
278
|
.leaflet-control-layers {
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
279
|
+
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
280
|
+
background: #fff;
|
281
|
+
border-radius: 5px;
|
282
|
+
}
|
280
283
|
.leaflet-control-layers-toggle {
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
284
|
+
background-image: url(<%= asset_path 'layers.png' %>);
|
285
|
+
width: 36px;
|
286
|
+
height: 36px;
|
287
|
+
}
|
285
288
|
.leaflet-retina .leaflet-control-layers-toggle {
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
+
background-image: url(<%= asset_path 'layers-2x.png' %>);
|
290
|
+
background-size: 26px 26px;
|
291
|
+
}
|
289
292
|
.leaflet-touch .leaflet-control-layers-toggle {
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
+
width: 44px;
|
294
|
+
height: 44px;
|
295
|
+
}
|
293
296
|
.leaflet-control-layers .leaflet-control-layers-list,
|
294
297
|
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
295
|
-
|
296
|
-
|
298
|
+
display: none;
|
299
|
+
}
|
297
300
|
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
+
display: block;
|
302
|
+
position: relative;
|
303
|
+
}
|
301
304
|
.leaflet-control-layers-expanded {
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
305
|
+
padding: 6px 10px 6px 6px;
|
306
|
+
color: #333;
|
307
|
+
background: #fff;
|
308
|
+
}
|
306
309
|
.leaflet-control-layers-selector {
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
310
|
+
margin-top: 2px;
|
311
|
+
position: relative;
|
312
|
+
top: 1px;
|
313
|
+
}
|
311
314
|
.leaflet-control-layers label {
|
312
|
-
|
313
|
-
|
315
|
+
display: block;
|
316
|
+
}
|
314
317
|
.leaflet-control-layers-separator {
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
318
|
+
height: 0;
|
319
|
+
border-top: 1px solid #ddd;
|
320
|
+
margin: 5px -10px 5px -6px;
|
321
|
+
}
|
319
322
|
|
320
323
|
|
321
324
|
/* attribution and scale controls */
|
322
325
|
|
323
326
|
.leaflet-container .leaflet-control-attribution {
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
327
|
+
background: #fff;
|
328
|
+
background: rgba(255, 255, 255, 0.7);
|
329
|
+
margin: 0;
|
330
|
+
}
|
328
331
|
.leaflet-control-attribution,
|
329
332
|
.leaflet-control-scale-line {
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
+
padding: 0 5px;
|
334
|
+
color: #333;
|
335
|
+
}
|
333
336
|
.leaflet-control-attribution a {
|
334
|
-
|
335
|
-
|
337
|
+
text-decoration: none;
|
338
|
+
}
|
336
339
|
.leaflet-control-attribution a:hover {
|
337
|
-
|
338
|
-
|
340
|
+
text-decoration: underline;
|
341
|
+
}
|
339
342
|
.leaflet-container .leaflet-control-attribution,
|
340
343
|
.leaflet-container .leaflet-control-scale {
|
341
|
-
|
342
|
-
|
344
|
+
font-size: 11px;
|
345
|
+
}
|
343
346
|
.leaflet-left .leaflet-control-scale {
|
344
|
-
|
345
|
-
|
347
|
+
margin-left: 5px;
|
348
|
+
}
|
346
349
|
.leaflet-bottom .leaflet-control-scale {
|
347
|
-
|
348
|
-
|
350
|
+
margin-bottom: 5px;
|
351
|
+
}
|
349
352
|
.leaflet-control-scale-line {
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
353
|
+
border: 2px solid #777;
|
354
|
+
border-top: none;
|
355
|
+
line-height: 1.1;
|
356
|
+
padding: 2px 5px 1px;
|
357
|
+
font-size: 11px;
|
358
|
+
white-space: nowrap;
|
359
|
+
overflow: hidden;
|
360
|
+
-moz-box-sizing: content-box;
|
361
|
+
box-sizing: content-box;
|
362
|
+
|
363
|
+
background: #fff;
|
364
|
+
background: rgba(255, 255, 255, 0.5);
|
365
|
+
}
|
363
366
|
.leaflet-control-scale-line:not(:first-child) {
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
367
|
+
border-top: 2px solid #777;
|
368
|
+
border-bottom: none;
|
369
|
+
margin-top: -2px;
|
370
|
+
}
|
368
371
|
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
369
|
-
|
370
|
-
|
372
|
+
border-bottom: 2px solid #777;
|
373
|
+
}
|
371
374
|
|
372
375
|
.leaflet-touch .leaflet-control-attribution,
|
373
376
|
.leaflet-touch .leaflet-control-layers,
|
374
377
|
.leaflet-touch .leaflet-bar {
|
375
|
-
|
376
|
-
|
378
|
+
box-shadow: none;
|
379
|
+
}
|
377
380
|
.leaflet-touch .leaflet-control-layers,
|
378
381
|
.leaflet-touch .leaflet-bar {
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
+
border: 2px solid rgba(0,0,0,0.2);
|
383
|
+
background-clip: padding-box;
|
384
|
+
}
|
382
385
|
|
383
386
|
|
384
387
|
/* popup */
|
385
388
|
|
386
389
|
.leaflet-popup {
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
+
position: absolute;
|
391
|
+
text-align: center;
|
392
|
+
}
|
390
393
|
.leaflet-popup-content-wrapper {
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
394
|
+
padding: 1px;
|
395
|
+
text-align: left;
|
396
|
+
border-radius: 12px;
|
397
|
+
}
|
395
398
|
.leaflet-popup-content {
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
+
margin: 13px 19px;
|
400
|
+
line-height: 1.4;
|
401
|
+
}
|
399
402
|
.leaflet-popup-content p {
|
400
|
-
|
401
|
-
|
403
|
+
margin: 18px 0;
|
404
|
+
}
|
402
405
|
.leaflet-popup-tip-container {
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
406
|
+
margin: 0 auto;
|
407
|
+
width: 40px;
|
408
|
+
height: 20px;
|
409
|
+
position: relative;
|
410
|
+
overflow: hidden;
|
411
|
+
}
|
409
412
|
.leaflet-popup-tip {
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
413
|
+
width: 17px;
|
414
|
+
height: 17px;
|
415
|
+
padding: 1px;
|
416
|
+
|
417
|
+
margin: -10px auto 0;
|
418
|
+
|
419
|
+
-webkit-transform: rotate(45deg);
|
420
|
+
-moz-transform: rotate(45deg);
|
421
|
+
-ms-transform: rotate(45deg);
|
422
|
+
-o-transform: rotate(45deg);
|
423
|
+
transform: rotate(45deg);
|
424
|
+
}
|
422
425
|
.leaflet-popup-content-wrapper,
|
423
426
|
.leaflet-popup-tip {
|
424
|
-
|
427
|
+
background: white;
|
425
428
|
|
426
|
-
|
427
|
-
|
429
|
+
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
430
|
+
}
|
428
431
|
.leaflet-container a.leaflet-popup-close-button {
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
432
|
+
position: absolute;
|
433
|
+
top: 0;
|
434
|
+
right: 0;
|
435
|
+
padding: 4px 4px 0 0;
|
436
|
+
text-align: center;
|
437
|
+
width: 18px;
|
438
|
+
height: 14px;
|
439
|
+
font: 16px/14px Tahoma, Verdana, sans-serif;
|
440
|
+
color: #c3c3c3;
|
441
|
+
text-decoration: none;
|
442
|
+
font-weight: bold;
|
443
|
+
background: transparent;
|
444
|
+
}
|
442
445
|
.leaflet-container a.leaflet-popup-close-button:hover {
|
443
|
-
|
444
|
-
|
446
|
+
color: #999;
|
447
|
+
}
|
445
448
|
.leaflet-popup-scrolled {
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
449
|
+
overflow: auto;
|
450
|
+
border-bottom: 1px solid #ddd;
|
451
|
+
border-top: 1px solid #ddd;
|
452
|
+
}
|
450
453
|
|
451
454
|
.leaflet-oldie .leaflet-popup-content-wrapper {
|
452
|
-
|
453
|
-
|
455
|
+
zoom: 1;
|
456
|
+
}
|
454
457
|
.leaflet-oldie .leaflet-popup-tip {
|
455
|
-
|
456
|
-
|
458
|
+
width: 24px;
|
459
|
+
margin: 0 auto;
|
457
460
|
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
+
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
462
|
+
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
463
|
+
}
|
461
464
|
.leaflet-oldie .leaflet-popup-tip-container {
|
462
|
-
|
463
|
-
|
465
|
+
margin-top: -1px;
|
466
|
+
}
|
464
467
|
|
465
468
|
.leaflet-oldie .leaflet-control-zoom,
|
466
469
|
.leaflet-oldie .leaflet-control-layers,
|
467
470
|
.leaflet-oldie .leaflet-popup-content-wrapper,
|
468
471
|
.leaflet-oldie .leaflet-popup-tip {
|
469
|
-
|
470
|
-
|
472
|
+
border: 1px solid #999;
|
473
|
+
}
|
471
474
|
|
472
475
|
|
473
476
|
/* div icon */
|
474
477
|
|
475
478
|
.leaflet-div-icon {
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
+
background: #fff;
|
480
|
+
border: 1px solid #666;
|
481
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leaflet-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akshay Joshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "<="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.4.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "<="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: simplecov-rcov
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,57 +44,43 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 4.2.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 4.2.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activesupport
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 4.2.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: activemodel
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 3.2.0
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 3.2.0
|
68
|
+
version: 4.2.0
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: railties
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - ">="
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
75
|
+
version: 4.2.0
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
description: This gem provides the leaflet.js map display library for your Rails
|
82
|
+
version: 4.2.0
|
83
|
+
description: This gem provides the leaflet.js map display library for your Rails 4
|
98
84
|
application.
|
99
85
|
email:
|
100
86
|
- joshi.a@gmail.com
|
@@ -142,10 +128,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
128
|
version: '0'
|
143
129
|
requirements: []
|
144
130
|
rubyforge_project: leaflet-rails
|
145
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.4.8
|
146
132
|
signing_key:
|
147
133
|
specification_version: 4
|
148
|
-
summary: Use leaflet.js with Rails
|
134
|
+
summary: Use leaflet.js with Rails 4.
|
149
135
|
test_files:
|
150
136
|
- spec/spec_helper.rb
|
151
137
|
- spec/view_helpers_spec.rb
|