From 78e95f67eb6d8fa2efea499386dd05bcc7689483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 17 May 2020 16:22:57 +0200 Subject: [PATCH] toodego: reload around me markers when map center changes (#30159) --- static/toodego/extra.js | 83 ++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 17 deletions(-) diff --git a/static/toodego/extra.js b/static/toodego/extra.js index b8425daa..fbba7d08 100644 --- a/static/toodego/extra.js +++ b/static/toodego/extra.js @@ -247,6 +247,17 @@ $(function() { var $map_widget = $('div.combo-cell-map'); var map = $map_widget[0].leaflet_map; var search_timeout_id = null; + map.q_center_lat = null; + map.q_center_lng = null; + + function get_distance(lat1, lng1, lat2, lng2) { + // simplest distance approximation https://www.mkompf.com/gps/distcalc.html + deglen = 111300; + x = lat1 - lat2; + lat = (lat1 + lat2) / 2 * 0.01745; + y = (lng1 - lng2) * Math.cos(lat1); + return deglen * Math.sqrt(x * x + y * y); + } function reset_map_query_string() { map.query_string = ""; @@ -254,9 +265,47 @@ $(function() { var center = map.getCenter(); var distance_q = '&distance=1000'; map.query_string += distance_q + '&lat=' + center.lat + '&lng=' + center.lng; + map.q_center_lat = center.lat; + map.q_center_lng = center.lng; } } + function get_mapsearch_query() { + var query = $('#mapsearch input').val(); + query = query.toLowerCase(); + query = query.replace(/^rue\s/i, ''); + return query; + } + + function refresh_around_me_query(map) { + var query = get_mapsearch_query(); + if (query.length < 2) { + map.query_string = ''; + } else { + map.query_string = 'q=' + query; + } + var center = map.getCenter(); + var collectivity_slugs = JSON.parse(document.getElementById('collectivity-slugs').textContent); + var distance_q = '&distance=1000'; + + for (var i=0; i 250) { + refresh_around_me_query(map); + refresh_markers(map); + } + }, 300); + } $(document).trigger('gnm:new-results'); });