From 38c29b9cc1ad325f461d9f67d274d4b66be8d061 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Wed, 2 Aug 2023 08:01:13 +0200 Subject: [PATCH] Do not try to compute geom based property before we have a geom fix #1177 --- umap/static/umap/js/umap.features.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/umap/static/umap/js/umap.features.js b/umap/static/umap/js/umap.features.js index 2aaecacd..ee1297bc 100644 --- a/umap/static/umap/js/umap.features.js +++ b/umap/static/umap/js/umap.features.js @@ -445,6 +445,7 @@ L.U.FeatureMixin = { }, resetTooltip: function () { + if (!this.hasGeom()) return const displayName = this.getDisplayName(null) let showLabel = this.getOption('showLabel') const oldLabelHover = this.getOption('labelHover') @@ -495,15 +496,17 @@ L.U.FeatureMixin = { extendedProperties: function () { // Include context properties properties = this.map.getGeoContext() - center = this.getCenter() - properties.lat = center.lat - properties.lon = center.lng - properties.lng = center.lng - properties.rank = this.getRank() + 1 if (L.locale) properties.locale = L.locale if (L.lang) properties.lang = L.lang - if (typeof this.getMeasure !== 'undefined') { - properties.measure = this.getMeasure() + properties.rank = this.getRank() + 1 + if (this.hasGeom()) { + center = this.getCenter() + properties.lat = center.lat + properties.lon = center.lng + properties.lng = center.lng + if (typeof this.getMeasure !== 'undefined') { + properties.measure = this.getMeasure() + } } return L.extend(properties, this.properties) }, @@ -536,6 +539,10 @@ L.U.Marker = L.Marker.extend({ this._popupHandlersAdded = true // prevent Leaflet from binding event on bindPopup }, + hasGeom: function () { + return !!this._latlng + }, + _onMouseOut: function () { if ( this.dragging && @@ -680,6 +687,10 @@ L.U.Marker = L.Marker.extend({ }) L.U.PathMixin = { + hasGeom: function () { + return !this.isEmpty() + }, + connectToDataLayer: function (datalayer) { L.U.FeatureMixin.connectToDataLayer.call(this, datalayer) // We keep markers on their own layer on top of the paths.