jekyll-maps 1.1.4 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +4 -0
- data/README.md +1 -1
- data/lib/jekyll-maps/google_map_api.js +60 -34
- data/lib/jekyll-maps/google_map_api.rb +2 -2
- data/lib/jekyll-maps/google_map_tag.rb +14 -3
- data/lib/jekyll-maps/location_finder.rb +14 -9
- data/lib/jekyll-maps/options_parser.rb +1 -0
- data/lib/jekyll-maps/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1a432ee547d3a2d9f4b6ae0b2e22c848b39014a
|
4
|
+
data.tar.gz: 9d6697299c275ac9e41dd50255621d4447d52c78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ca56f5cb9c366f96e6dfe82122eb01c7a353db4c06dfbecd25b7223d320621d78b5f0856f79d8cdde12a5d7f7560e465eca0ae5191f3af8a34b27d8faf51055
|
7
|
+
data.tar.gz: 8d7de844e79b31633f71472b07567d555140d7d85835070ab73ccfc493539154f5fb0d26680384c76b17ea1574d1532a6b5c0268ad8e54db4c9e1f71f6fc137b
|
data/History.md
CHANGED
data/README.md
CHANGED
@@ -99,7 +99,7 @@ If you have any questions or proposals - open up an [issue](https://github.com/a
|
|
99
99
|
|
100
100
|
## Examples
|
101
101
|
|
102
|
-
Want to see it in action? Check out [Demo Page](https://ayastreb.
|
102
|
+
Want to see it in action? Check out [Demo Page](https://ayastreb.me/jekyll-maps/#examples)!
|
103
103
|
|
104
104
|
## Contributing
|
105
105
|
|
@@ -2,13 +2,13 @@ var jekyllMaps = (function () {
|
|
2
2
|
'use strict';
|
3
3
|
|
4
4
|
return {
|
5
|
-
data:
|
6
|
-
maps:
|
7
|
-
initializeMap:
|
5
|
+
data: [],
|
6
|
+
maps: [],
|
7
|
+
initializeMap: initializeMap,
|
8
8
|
initializeCluster: initializeCluster,
|
9
|
-
register:
|
10
|
-
render:
|
11
|
-
processCluster:
|
9
|
+
register: register,
|
10
|
+
render: render,
|
11
|
+
processCluster: processCluster
|
12
12
|
};
|
13
13
|
|
14
14
|
/**
|
@@ -17,8 +17,8 @@ var jekyllMaps = (function () {
|
|
17
17
|
function initializeMap() {
|
18
18
|
this.options = {
|
19
19
|
mapTypeId: google.maps.MapTypeId.ROADMAP,
|
20
|
-
center:
|
21
|
-
zoom:
|
20
|
+
center: new google.maps.LatLng(0, 0),
|
21
|
+
zoom: 12
|
22
22
|
}
|
23
23
|
this.mapReady = true;
|
24
24
|
this.render();
|
@@ -29,10 +29,10 @@ var jekyllMaps = (function () {
|
|
29
29
|
*
|
30
30
|
* @param String id
|
31
31
|
* @param Array locations
|
32
|
-
* @param
|
32
|
+
* @param Object settings
|
33
33
|
*/
|
34
|
-
function register(id, locations,
|
35
|
-
this.data.push({id: id, locations: locations,
|
34
|
+
function register(id, locations, settings) {
|
35
|
+
this.data.push({id: id, locations: locations, settings: settings});
|
36
36
|
this.render();
|
37
37
|
}
|
38
38
|
|
@@ -43,46 +43,50 @@ var jekyllMaps = (function () {
|
|
43
43
|
if (!this.mapReady) return;
|
44
44
|
|
45
45
|
while (this.data.length > 0) {
|
46
|
-
var data
|
47
|
-
bounds
|
48
|
-
options
|
49
|
-
map
|
46
|
+
var data = this.data.pop(),
|
47
|
+
bounds = new google.maps.LatLngBounds(),
|
48
|
+
options = Object.assign({}, this.options, data.settings),
|
49
|
+
map = new google.maps.Map(document.getElementById(data.id), options),
|
50
50
|
infoWindow = new google.maps.InfoWindow(),
|
51
|
-
markers
|
51
|
+
markers = data.locations.map(function (location) {
|
52
|
+
return createMarker(location, options.showMarkerPopup);
|
53
|
+
});
|
52
54
|
|
53
55
|
map.fitBounds(bounds);
|
54
56
|
google.maps.event.addListenerOnce(map, 'bounds_changed', onBoundsChanged);
|
55
|
-
if (
|
57
|
+
if (options.useCluster) {
|
56
58
|
this.maps.push({map: map, markers: markers});
|
57
59
|
this.processCluster();
|
58
60
|
}
|
59
61
|
}
|
60
62
|
|
61
|
-
function createMarker(location) {
|
63
|
+
function createMarker(location, showMarkerPopup) {
|
62
64
|
var position = new google.maps.LatLng(location.latitude, location.longitude),
|
63
|
-
marker
|
65
|
+
marker = new google.maps.Marker({
|
64
66
|
position: position,
|
65
|
-
title:
|
66
|
-
image:
|
67
|
-
url:
|
68
|
-
map:
|
67
|
+
title: location.title,
|
68
|
+
image: location.image,
|
69
|
+
url: location.url,
|
70
|
+
map: map
|
69
71
|
});
|
70
72
|
|
71
73
|
bounds.extend(position);
|
72
|
-
marker.addListener('click',
|
73
|
-
var contentString = '<div class="map-info-window"><h5>' + this.title + '</h5>',
|
74
|
-
link = 'View';
|
75
|
-
if (this.image.length > 0) {
|
76
|
-
link = '<img src="' + this.image + '" alt="' + this.title + '"/>';
|
77
|
-
}
|
78
|
-
contentString += '<a href="' + this.url + '">' + link + '</a></div>';
|
79
|
-
infoWindow.setContent(contentString);
|
80
|
-
infoWindow.open(map, this);
|
81
|
-
});
|
74
|
+
if (showMarkerPopup) marker.addListener('click', markerPopup);
|
82
75
|
|
83
76
|
return marker;
|
84
77
|
}
|
85
78
|
|
79
|
+
function markerPopup() {
|
80
|
+
var contentString = '<div class="map-info-window"><h5>' + this.title + '</h5>',
|
81
|
+
link = 'View';
|
82
|
+
if (this.image.length > 0) {
|
83
|
+
link = '<img src="' + this.image + '" alt="' + this.title + '"/>';
|
84
|
+
}
|
85
|
+
contentString += '<a href="' + this.url + '">' + link + '</a></div>';
|
86
|
+
infoWindow.setContent(contentString);
|
87
|
+
infoWindow.open(map, this);
|
88
|
+
}
|
89
|
+
|
86
90
|
function onBoundsChanged() {
|
87
91
|
if (this.getZoom() > options.zoom) {
|
88
92
|
this.setZoom(options.zoom);
|
@@ -102,9 +106,31 @@ var jekyllMaps = (function () {
|
|
102
106
|
while (this.maps.length > 0) {
|
103
107
|
var obj = this.maps.pop();
|
104
108
|
new MarkerClusterer(obj.map, obj.markers, {
|
105
|
-
gridSize:
|
109
|
+
gridSize: this.clusterSettings.grid_size || 25,
|
106
110
|
imagePath: 'https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/images/m'
|
107
111
|
});
|
108
112
|
}
|
109
113
|
}
|
114
|
+
|
115
|
+
if (typeof Object.assign != 'function') {
|
116
|
+
Object.assign = function (target) {
|
117
|
+
'use strict';
|
118
|
+
if (target == null) {
|
119
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
120
|
+
}
|
121
|
+
|
122
|
+
target = Object(target);
|
123
|
+
for (var index = 1; index < arguments.length; index++) {
|
124
|
+
var source = arguments[index];
|
125
|
+
if (source != null) {
|
126
|
+
for (var key in source) {
|
127
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
128
|
+
target[key] = source[key];
|
129
|
+
}
|
130
|
+
}
|
131
|
+
}
|
132
|
+
}
|
133
|
+
return target;
|
134
|
+
};
|
135
|
+
}
|
110
136
|
}());
|
@@ -31,7 +31,7 @@ HTML
|
|
31
31
|
.fetch("google", {})
|
32
32
|
.fetch("api_key", "")
|
33
33
|
<<HTML
|
34
|
-
<script async defer src='https://maps.googleapis.com/maps/api/js?key=#{api_key}&callback
|
34
|
+
<script async defer src='https://maps.googleapis.com/maps/api/js?key=#{api_key}&callback=#{Jekyll::Maps::GoogleMapTag::JS_LIB_NAME}.initializeMap'></script>
|
35
35
|
HTML
|
36
36
|
end
|
37
37
|
|
@@ -43,7 +43,7 @@ HTML
|
|
43
43
|
return unless settings.fetch("enabled", true)
|
44
44
|
<<HTML
|
45
45
|
<script async defer src='https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/src/markerclusterer.js'
|
46
|
-
onload='
|
46
|
+
onload='#{Jekyll::Maps::GoogleMapTag::JS_LIB_NAME}.initializeCluster(#{settings.to_json})'></script>
|
47
47
|
HTML
|
48
48
|
end
|
49
49
|
|
@@ -12,14 +12,17 @@ module Jekyll
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def render(context)
|
15
|
-
locations
|
16
|
-
use_cluster = @args[:flags][:no_cluster] ? "false" : "true"
|
15
|
+
locations = @finder.find(context.registers[:site], context.registers[:page])
|
17
16
|
@args[:attributes][:id] ||= SecureRandom.uuid
|
18
17
|
|
19
18
|
<<HTML
|
20
19
|
<div #{render_attributes}></div>
|
21
20
|
<script type='text/javascript'>
|
22
|
-
#{JS_LIB_NAME}.register(
|
21
|
+
#{JS_LIB_NAME}.register(
|
22
|
+
'#{@args[:attributes][:id]}',
|
23
|
+
#{locations.to_json},
|
24
|
+
#{map_settings.to_json}
|
25
|
+
);
|
23
26
|
</script>
|
24
27
|
HTML
|
25
28
|
end
|
@@ -48,6 +51,14 @@ HTML
|
|
48
51
|
css = css.join(" ") if css.is_a?(Array)
|
49
52
|
%(class='#{css}')
|
50
53
|
end
|
54
|
+
|
55
|
+
private
|
56
|
+
def map_settings
|
57
|
+
{
|
58
|
+
useCluster: !@args[:flags][:no_cluster],
|
59
|
+
showMarkerPopup: @args[:attributes][:show_popup] != 'false'
|
60
|
+
}
|
61
|
+
end
|
51
62
|
end
|
52
63
|
end
|
53
64
|
end
|
@@ -14,15 +14,7 @@ module Jekyll
|
|
14
14
|
site.data.each { |_, docs| filter(docs) }
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
{
|
19
|
-
:latitude => document["location"]["latitude"],
|
20
|
-
:longitude => document["location"]["longitude"],
|
21
|
-
:title => document["title"],
|
22
|
-
:url => document["url"] || document.url,
|
23
|
-
:image => document["image"] || ""
|
24
|
-
}
|
25
|
-
end
|
17
|
+
convert
|
26
18
|
end
|
27
19
|
|
28
20
|
private
|
@@ -43,6 +35,19 @@ module Jekyll
|
|
43
35
|
return false if doc[key].nil? || doc[key] != value
|
44
36
|
end
|
45
37
|
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def convert
|
41
|
+
@documents.map do |document|
|
42
|
+
{
|
43
|
+
:latitude => document["location"]["latitude"],
|
44
|
+
:longitude => document["location"]["longitude"],
|
45
|
+
:title => document["title"],
|
46
|
+
:url => document["url"] || document.url,
|
47
|
+
:image => document["image"] || ""
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
46
51
|
end
|
47
52
|
end
|
48
53
|
end
|
data/lib/jekyll-maps/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-maps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anatoliy Yastreb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|