mapkick-rb 0.1.2 → 0.1.4
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/CHANGELOG.md +8 -0
- data/README.md +6 -8
- data/lib/mapkick/version.rb +1 -1
- data/licenses/LICENSE-mapkick-bundle.txt +1 -1
- data/vendor/assets/javascripts/mapkick.bundle.js +68 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5a2b37b33ecba167e0844af635b9a87a3afad84eb92b06e19cd3db6ecf6ceb8
|
4
|
+
data.tar.gz: db38e21238698891fa79c21dfcafddba4b97fe3e4b31a91083871279a90836bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54729a215c5960c9b73395d98a395941231fa76b6e7b8c9c4d85364f5299e6c4032ac66d08988b236a4fe06a0f40018be997eb53822d44c11003671c4143e43b
|
7
|
+
data.tar.gz: 303226c8be546b020ff81054559f8cff01560ac5a1c26f30f97b1931e1990dcb9186db4a6a885530b80714e89db3de92881f554253ec6c164a47794a3b787034
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -109,14 +109,15 @@ Or a URL that returns JSON (same format as above)
|
|
109
109
|
|
110
110
|
Use `latitude` or `lat` for latitude and `longitude`, `lon`, or `lng` for longitude
|
111
111
|
|
112
|
-
You can specify a label and
|
112
|
+
You can specify a label, tooltip, and color for each data point
|
113
113
|
|
114
114
|
```ruby
|
115
115
|
{
|
116
116
|
latitude: ...,
|
117
117
|
longitude: ...,
|
118
118
|
label: "Hot Chicken Takeover",
|
119
|
-
tooltip: "5 stars"
|
119
|
+
tooltip: "5 stars",
|
120
|
+
color: "#f84d4d"
|
120
121
|
}
|
121
122
|
```
|
122
123
|
|
@@ -124,13 +125,14 @@ You can specify a label and tooltip for each data point
|
|
124
125
|
|
125
126
|
Use `geometry` with a GeoJSON `Polygon` or `MultiPolygon`
|
126
127
|
|
127
|
-
You can specify a label and
|
128
|
+
You can specify a label, tooltip, and color for each data point
|
128
129
|
|
129
130
|
```ruby
|
130
131
|
{
|
131
132
|
geometry: {type: "Polygon", coordinates: ...},
|
132
133
|
label: "Hot Chicken Takeover",
|
133
|
-
tooltip: "5 stars"
|
134
|
+
tooltip: "5 stars",
|
135
|
+
color: "#0090ff"
|
134
136
|
}
|
135
137
|
```
|
136
138
|
|
@@ -194,10 +196,6 @@ Download [mapkick.bundle.js](https://raw.githubusercontent.com/ankane/mapkick/ma
|
|
194
196
|
<script src="mapkick.bundle.js"></script>
|
195
197
|
```
|
196
198
|
|
197
|
-
## No Ruby? No Problem
|
198
|
-
|
199
|
-
Check out [mapkick.js](https://github.com/ankane/mapkick.js)
|
200
|
-
|
201
199
|
## History
|
202
200
|
|
203
201
|
View the [changelog](CHANGELOG.md)
|
data/lib/mapkick/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* This bundle includes:
|
3
3
|
*
|
4
|
-
* Mapkick.js v0.2.
|
4
|
+
* Mapkick.js v0.2.5
|
5
5
|
* https://github.com/ankane/mapkick.js
|
6
6
|
* MIT License
|
7
7
|
*
|
@@ -260,6 +260,13 @@
|
|
260
260
|
return element
|
261
261
|
}
|
262
262
|
|
263
|
+
// check for hex or named color
|
264
|
+
function validateColor(color) {
|
265
|
+
if (!/^#([0-9a-f]{3}){1,2}$/i.test(color) && !/^[a-z]+$/i.test(color)) {
|
266
|
+
throw new Error("Invalid color")
|
267
|
+
}
|
268
|
+
}
|
269
|
+
|
263
270
|
function createMarkerImage(library, color) {
|
264
271
|
// set height to center vertically
|
265
272
|
var height = 41;
|
@@ -276,10 +283,7 @@
|
|
276
283
|
svg.setAttribute("width", width);
|
277
284
|
svg.setAttribute("viewBox", ("0 0 " + width + " " + height));
|
278
285
|
|
279
|
-
|
280
|
-
if (!/^#([0-9a-f]{3}){1,2}$/i.test(color) && !/^[a-z]+$/i.test(color)) {
|
281
|
-
throw new Error("Invalid color")
|
282
|
-
}
|
286
|
+
validateColor(color);
|
283
287
|
|
284
288
|
// set color
|
285
289
|
svg.querySelector("*[fill='#3FB1CE']").setAttribute("fill", color);
|
@@ -440,6 +444,9 @@
|
|
440
444
|
});
|
441
445
|
}
|
442
446
|
|
447
|
+
// use Map instead of object for security
|
448
|
+
var markerIds = new window.Map();
|
449
|
+
|
443
450
|
function generateGeoJSON(data, options) {
|
444
451
|
var geojson = {
|
445
452
|
type: "FeatureCollection",
|
@@ -459,6 +466,19 @@
|
|
459
466
|
properties.mapkickIconAnchor = properties.icon === "mapkick" ? "bottom" : "center";
|
460
467
|
properties.mapkickIconOffset = properties.icon === "mapkick" ? [0, 10] : [0, 0];
|
461
468
|
|
469
|
+
if (properties.icon === "mapkick") {
|
470
|
+
var color = properties.color || markerOptions.color || "#f84d4d";
|
471
|
+
|
472
|
+
var markerId = markerIds.get(color);
|
473
|
+
if (markerId === undefined) {
|
474
|
+
markerId = markerIds.size;
|
475
|
+
validateColor(color);
|
476
|
+
markerIds.set(color, markerId);
|
477
|
+
}
|
478
|
+
|
479
|
+
properties.icon = "mapkick-" + markerId;
|
480
|
+
}
|
481
|
+
|
462
482
|
var coordinates = rowCoordinates(row);
|
463
483
|
|
464
484
|
if (!coordinates[1]) {
|
@@ -481,6 +501,9 @@
|
|
481
501
|
}
|
482
502
|
|
483
503
|
delete properties.geometry;
|
504
|
+
|
505
|
+
properties.mapkickColor = properties.color || markerOptions.color || "#0090ff";
|
506
|
+
|
484
507
|
}
|
485
508
|
|
486
509
|
geojson.features.push({
|
@@ -625,8 +648,6 @@
|
|
625
648
|
}
|
626
649
|
});
|
627
650
|
} else {
|
628
|
-
var fillColor = markerOptions.color || "#0090ff";
|
629
|
-
|
630
651
|
var beforeId = layerBeforeFill(map);
|
631
652
|
|
632
653
|
var outlineId = name + "-outline";
|
@@ -635,7 +656,7 @@
|
|
635
656
|
source: name,
|
636
657
|
type: "line",
|
637
658
|
paint: {
|
638
|
-
"line-color":
|
659
|
+
"line-color": {type: "identity", property: "mapkickColor"},
|
639
660
|
"line-opacity": 0.7,
|
640
661
|
"line-width": 1
|
641
662
|
}
|
@@ -646,7 +667,7 @@
|
|
646
667
|
source: name,
|
647
668
|
type: "fill",
|
648
669
|
paint: {
|
649
|
-
"fill-color":
|
670
|
+
"fill-color": {type: "identity", property: "mapkickColor"},
|
650
671
|
"fill-opacity": 0.3
|
651
672
|
}
|
652
673
|
}, outlineId);
|
@@ -715,7 +736,7 @@
|
|
715
736
|
return
|
716
737
|
}
|
717
738
|
|
718
|
-
if (feature.properties.icon
|
739
|
+
if (mapType === "point" && feature.properties.icon.startsWith("mapkick-")) {
|
719
740
|
popup.options.offset = {
|
720
741
|
"top": [0, 14],
|
721
742
|
"top-left": [0, 14],
|
@@ -855,13 +876,26 @@
|
|
855
876
|
}
|
856
877
|
}
|
857
878
|
|
879
|
+
var zoom = options.zoom;
|
880
|
+
var center = options.center;
|
881
|
+
if (!center) {
|
882
|
+
if (!bounds.isEmpty()) {
|
883
|
+
center = bounds.getCenter();
|
884
|
+
} else {
|
885
|
+
center = [0, 0];
|
886
|
+
if (!zoom) {
|
887
|
+
zoom = 1;
|
888
|
+
}
|
889
|
+
}
|
890
|
+
}
|
891
|
+
|
858
892
|
var mapOptions = {
|
859
893
|
container: element,
|
860
894
|
style: style,
|
861
895
|
dragRotate: false,
|
862
896
|
touchZoomRotate: false,
|
863
|
-
center:
|
864
|
-
zoom:
|
897
|
+
center: center,
|
898
|
+
zoom: zoom || 15
|
865
899
|
};
|
866
900
|
if (!options.style) {
|
867
901
|
mapOptions.projection = "mercator";
|
@@ -880,7 +914,10 @@
|
|
880
914
|
if (!map.style.stylesheet) {
|
881
915
|
map.style.stylesheet = {};
|
882
916
|
}
|
883
|
-
|
917
|
+
|
918
|
+
if (!bounds.isEmpty()) {
|
919
|
+
map.fitBounds(bounds, {padding: 40, animate: false, maxZoom: 15});
|
920
|
+
}
|
884
921
|
}
|
885
922
|
|
886
923
|
this$1$1.map = map;
|
@@ -909,10 +946,13 @@
|
|
909
946
|
});
|
910
947
|
}
|
911
948
|
|
912
|
-
var
|
913
|
-
|
914
|
-
|
915
|
-
|
949
|
+
var outstanding = markerIds.size;
|
950
|
+
|
951
|
+
function checkReady() {
|
952
|
+
if (outstanding !== 0) {
|
953
|
+
outstanding--;
|
954
|
+
return
|
955
|
+
}
|
916
956
|
|
917
957
|
addLayer("objects", geojson);
|
918
958
|
|
@@ -921,7 +961,18 @@
|
|
921
961
|
while ((cb = layersReadyQueue.shift())) {
|
922
962
|
cb();
|
923
963
|
}
|
964
|
+
}
|
965
|
+
|
966
|
+
// load marker images
|
967
|
+
markerIds.forEach(function (id, color) {
|
968
|
+
var image = createMarkerImage(library, color);
|
969
|
+
image.addEventListener("load", function () {
|
970
|
+
map.addImage(("mapkick-" + id + "-15"), image);
|
971
|
+
checkReady();
|
972
|
+
});
|
924
973
|
});
|
974
|
+
|
975
|
+
checkReady();
|
925
976
|
});
|
926
977
|
};
|
927
978
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mapkick-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: andrew@ankane.org
|