Skip to content

Commit 23754d4

Browse files
authored
fix broken mouse events within shiny apps caused by leaflet-search in leaflet.extras (#563)
* trim latLng that value is actually retrieved. Do not allow non standard values to propagate * added news
1 parent 46c0684 commit 23754d4

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ leaflet 2.0.1.9000
33

44
BUG FIXES and IMPROVEMENTS
55
* Require viridis >= 0.5.1 to avoid namespace issues with viridisLite (#557)
6+
* Fixed broken mouse events after using leaflet-search from leaflet.extras within shiny applications (#563)
7+
8+
69

710
leaflet 2.0.1
811
--------------------------------------------------------------------------------

inst/htmlwidgets/leaflet.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1287,10 +1287,18 @@ function mouseHandler(mapId, layerId, group, eventName, extraInfo) {
12871287
return function (e) {
12881288
if (!_htmlwidgets2.default.shinyMode) return;
12891289

1290+
var latLng = e.target.getLatLng ? e.target.getLatLng() : e.latlng;
1291+
if (latLng) {
1292+
// retrieve only lat, lon values to remove prototype
1293+
// and extra parameters added by 3rd party modules
1294+
// these objects are for json serialization, not javascript
1295+
var latLngVal = _leaflet2.default.latLng(latLng); // make sure it has consistent shape
1296+
latLng = { lat: latLngVal.lat, lon: latLngVal.lon };
1297+
}
12901298
var eventInfo = _jquery2.default.extend({
12911299
id: layerId,
12921300
".nonce": Math.random() // force reactivity
1293-
}, group !== null ? { group: group } : null, e.target.getLatLng ? e.target.getLatLng() : e.latlng, extraInfo);
1301+
}, group !== null ? { group: group } : null, latLng, extraInfo);
12941302

12951303
_shiny2.default.onInputChange(mapId + "_" + eventName, eventInfo);
12961304
};

javascript/src/methods.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,21 @@ function mouseHandler(mapId, layerId, group, eventName, extraInfo) {
1818
return function(e) {
1919
if (!HTMLWidgets.shinyMode) return;
2020

21+
let latLng = e.target.getLatLng ? e.target.getLatLng() : e.latlng;
22+
if (latLng) {
23+
// retrieve only lat, lon values to remove prototype
24+
// and extra parameters added by 3rd party modules
25+
// these objects are for json serialization, not javascript
26+
let latLngVal = L.latLng(latLng); // make sure it has consistent shape
27+
latLng = {lat: latLngVal.lat, lon: latLngVal.lon};
28+
}
2129
let eventInfo = $.extend(
2230
{
2331
id: layerId,
2432
".nonce": Math.random() // force reactivity
2533
},
2634
group !== null ? {group: group} : null,
27-
e.target.getLatLng ? e.target.getLatLng() : e.latlng,
35+
latLng,
2836
extraInfo
2937
);
3038

0 commit comments

Comments
 (0)