/
leaflet-frontend.js
71 lines (62 loc) · 2.46 KB
/
leaflet-frontend.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
jQuery(document).ready(function($) {
// only render the map if an api-key is present
render_leaflet_map();
function render_leaflet_map() {
if( typeof leaflet_field.value == 'object' ) {
map_settings = leaflet_field.value;
}
else if(typeof leaflet_field.value == 'string') {
map_settings = JSON.parse(leaflet_field.value);
}
else {
map_settings = {
zoom_level:null,
center:{
lat:null,
lng:null
},
markers:{}
};
}
if( map_settings.center.lat == null ) {
map_settings.center.lat = leaflet_field.lat;
}
if( map_settings.center.lng == null ) {
map_settings.center.lng = leaflet_field.lng;
}
// check if the zoom level is set and within 1-18
if( map_settings.zoom_level == null || map_settings.zoom_level > 18 || map_settings.zoom_level < 1 ) {
if( leaflet_field.zoom_level > 0 && leaflet_field.zoom_level < 19 ) {
map_settings.zoom_level = leaflet_field.zoom_level;
}
else {
map_settings.zoom_level = 13;
}
}
var map = L.map( leaflet_field.id + '_map', {
center: new L.LatLng( map_settings.center.lat, map_settings.center.lng ),
zoom: map_settings.zoom_level,
doubleClickZoom: true
});
L.tileLayer(leaflet_field.map_provider.url, {
attribution: leaflet_field.map_provider.attribution,
maxZoom: 18
}).addTo(map);
if( Object.keys(map_settings.markers).length > 0 || (window.map_settings.drawnItems && window.map_settings.drawnItems.features.length > 0) ) {
$.each(map_settings.markers, function(index, marker) {
L.geoJson(marker, {
onEachFeature:function(feature, layer){
if(feature.properties && feature.properties.popupContent && feature.properties.popupContent != "") {
layer.bindPopup(feature.properties.popupContent);
}
}
}).addTo(map);
});
L.geoJson(map_settings.drawnItems, {
onEachFeature: function(feature, layer) {
layer.options.color = "#000000";
}
}).addTo(map);
}
}
});