2015-03-01 16:50:02 +01:00
|
|
|
# Setting up OpenStreeMap from a generic #map element
|
2016-07-02 16:48:47 +02:00
|
|
|
$(document).on 'turbolinks:load', ->
|
2016-04-16 23:08:03 +02:00
|
|
|
$('#map.list').each ->
|
2014-09-21 14:32:59 +02:00
|
|
|
map = L.map 'map'
|
2019-04-20 15:16:21 +02:00
|
|
|
# Set some initial bounds, in case nothing else is displayed
|
|
|
|
map.fitBounds [ [60, -20], [30, 30] ]
|
2014-07-31 01:32:47 +02:00
|
|
|
|
2017-10-14 21:39:56 +02:00
|
|
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
|
|
attribution: '© <a href="https://osm.org/copyright">OpenStreetMap</a>'
|
2014-08-23 16:59:42 +02:00
|
|
|
).addTo map
|
|
|
|
|
2016-04-17 01:40:34 +02:00
|
|
|
controls = L.control.layers(null, null, collapsed: false).addTo map
|
2014-10-29 11:42:07 +01:00
|
|
|
|
2016-04-16 23:08:03 +02:00
|
|
|
$('li a', this).each ->
|
|
|
|
url = $(this).attr 'href'
|
|
|
|
text = $(this).html()
|
2020-01-16 20:19:52 +01:00
|
|
|
markerColor = $('.awesome-marker', this).attr('class')
|
|
|
|
.substr 'awesome-marker awesome-marker-icon-'.length
|
2016-04-16 23:08:03 +02:00
|
|
|
if location.search && url.indexOf('?') >= 0
|
|
|
|
url += '&' + location.search.substr 1
|
|
|
|
else
|
|
|
|
url += location.search
|
2014-08-23 16:59:42 +02:00
|
|
|
|
2016-04-16 23:08:03 +02:00
|
|
|
$.getJSON url, (json) ->
|
2019-04-20 15:16:21 +02:00
|
|
|
# Display the layer only if some items are present
|
|
|
|
return unless json?.length
|
|
|
|
|
|
|
|
layer = L.markerClusterGroup(maxClusterRadius: 30).addLayer L.geoJson json,
|
|
|
|
pointToLayer: (feature, latlng) ->
|
|
|
|
# Marker with the proper icon
|
|
|
|
marker = L.AwesomeMarkers.icon
|
|
|
|
prefix: 'fa',
|
|
|
|
icon: feature.properties.icon || 'calendar',
|
|
|
|
markerColor: markerColor
|
|
|
|
L.marker latlng, icon: marker
|
|
|
|
onEachFeature: (feature, layer) ->
|
|
|
|
# Does this feature have a property named popupContent?
|
|
|
|
if (feature.properties && feature.properties.popupContent)
|
|
|
|
layer.bindPopup feature.properties.popupContent
|
|
|
|
|
|
|
|
map.addLayer layer
|
|
|
|
controls.addOverlay layer, text + ' - ' + json.length
|
|
|
|
|
|
|
|
if (/maps\//.test(location.href) || /maps.json/.test url) &&
|
|
|
|
layer.getBounds()._northEast && layer.getBounds()._southWest
|
|
|
|
# Automatic focus to all displayed events
|
|
|
|
map.fitBounds layer.getBounds()
|
2014-08-23 16:59:42 +02:00
|
|
|
|
2016-04-09 16:06:22 +02:00
|
|
|
$('#map.event, #map.orga').each ->
|
2014-10-28 00:23:11 +01:00
|
|
|
coord = [$(this).data('latitude'), $(this).data('longitude')]
|
2014-08-02 15:51:45 +02:00
|
|
|
|
2014-08-23 16:59:42 +02:00
|
|
|
map = L.map('map').setView [coord[0], coord[1]], 16
|
|
|
|
|
2017-10-14 21:39:56 +02:00
|
|
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
|
|
attribution: '© <a href="https://osm.org/copyright">OpenStreetMap</a>'
|
2014-07-31 01:32:47 +02:00
|
|
|
).addTo map
|
|
|
|
|
2014-10-29 11:42:07 +01:00
|
|
|
url = $(this).data 'url'
|
2014-12-13 12:32:05 +01:00
|
|
|
if location.search && url.indexOf('?') >= 0
|
2014-10-29 11:42:07 +01:00
|
|
|
url += '&' + location.search.substr 1
|
|
|
|
else
|
|
|
|
url += location.search
|
|
|
|
|
2016-05-23 01:11:22 +02:00
|
|
|
# Marker with the proper icon
|
|
|
|
marker = L.AwesomeMarkers.icon
|
|
|
|
prefix: 'fa',
|
2020-01-16 20:19:52 +01:00
|
|
|
icon: $(this).data('icon') || 'calendar',
|
|
|
|
markerColor: 'darkred'
|
2016-05-23 01:11:22 +02:00
|
|
|
L.marker([coord[0], coord[1]], icon: marker).addTo map
|
2016-05-22 01:12:30 +02:00
|
|
|
|
2014-10-29 11:42:07 +01:00
|
|
|
$.getJSON url, (json) ->
|
2016-04-16 23:08:03 +02:00
|
|
|
layer = L.markerClusterGroup(maxClusterRadius: 30).addLayer L.geoJson json,
|
2016-05-22 01:12:30 +02:00
|
|
|
pointToLayer: (feature, latlng) ->
|
2016-05-22 01:23:17 +02:00
|
|
|
# Marker with the proper icon
|
|
|
|
marker = L.AwesomeMarkers.icon
|
|
|
|
prefix: 'fa',
|
|
|
|
icon: feature.properties.icon || 'calendar',
|
2020-01-16 20:19:52 +01:00
|
|
|
markerColor: 'blue'
|
2016-05-22 01:12:30 +02:00
|
|
|
L.marker latlng, icon: marker
|
|
|
|
,
|
2014-07-31 01:32:47 +02:00
|
|
|
onEachFeature: (feature, layer) ->
|
|
|
|
# Does this feature have a property named popupContent?
|
|
|
|
if (feature.properties && feature.properties.popupContent)
|
2014-09-21 14:32:59 +02:00
|
|
|
layer.bindPopup(feature.properties.popupContent)
|
2014-08-23 16:59:42 +02:00
|
|
|
|
2016-04-16 23:08:03 +02:00
|
|
|
map.addLayer layer
|