jekyll-maps 1.1.4 → 1.1.5
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 +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
|