/
client.js
77 lines (62 loc) · 2.34 KB
/
client.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* Default values */
var markerIcon = L.AwesomeMarkers.icon({
icon: 'star',
markerColor: 'blue'
});
var zoomLevel = 12;
var tileLayerProvider = 'OpenStreetMap.Mapnik';
var defaultLatLng = L.latLng(0.0, 0.0);
var useDoubleClickZoom = true;
/* Leaftlet settings */
Template.afLeaflet.rendered = function() {
// Separate data for this map instance
var identifier = this.data.name.replace(".", "-");
var $jsLat = $('.' + identifier + '-js-lat');
var $jsLng = $('.' + identifier + '-js-lng');
var $jsValue = $('.' + identifier + '-js-value');
// Check for user provided settings
if (this.data.atts.markerIcon)
markerIcon.options.icon = this.data.atts.markerIcon;
if (this.data.atts.markerColor)
markerIcon.options.markerColor = this.data.atts.markerColor;
if (this.data.atts.defaultLocation)
defaultLatLng = L.latLng(this.data.atts.defaultLocation[0], this.data.atts.defaultLocation[1]);
if(this.data.atts.zoomLevel)
zoomLevel = this.data.atts.zoomLevel;
if(this.data.atts.tileLayerProvider)
tileLayerProvider = this.data.atts.tileLayerProvider;
if(this.data.atts.doubleClickZoom)
useDoubleClickZoom = this.data.atts.doubleClickZoom;
// Create map
var map = L.map(identifier + '-map', {
doubleClickZoom: useDoubleClickZoom
});
L.tileLayer.provider(tileLayerProvider).addTo(map);
// Create and place the marker
if($jsLat.val() && $jsLng.val()) {
var newLatLng = L.latLng($jsLat.val(), $jsLng.val());
marker = L.marker(newLatLng, {icon: markerIcon, draggable: true});
map.setView(newLatLng, zoomLevel);
}
else {
marker = L.marker(defaultLatLng, {icon: markerIcon, draggable: true});
map.setView(defaultLatLng, zoomLevel);
}
marker.addTo(map);
// Update marker location on value change
$('.' + identifier + '-js-lat, .' + identifier + '-js-lng').change(function() {
var lat = $jsLat.val();
var lng = $jsLng.val();
$jsValue.val($jsLat.val()+","+$jsLng.val());
map.setView([lat, lng], zoomLevel, {
animate: true
})
marker.setLatLng(L.latLng(lat, lng));
});
//Update values on marker drag
marker.on('drag', function(event) {
$jsLat.val(event.latlng.lat);
$jsLng.val(event.latlng.lng);
$jsValue.val($jsLat.val()+","+$jsLng.val());
});
};