fix#1399
This is a very first look. But it's not as simple as I thought,
because:
- as for a heatmap, we need a special representation (each feature
should be a circle, not a normal icon nor a polygon)
- as for a choropleth, we want to dynamically take control over the
rendering (we need all the features to be able to compute the bubbles
sizes)
- as for a normal layer, we want all the features to react to interaction,
specifically click to open a popup, but also tooltip, highlight (?), etc.
In this first implementation, I've created a new type of layer, that creates
a CircleMarker for each feature, but doing so we lose all the interactions.
I've tried to set a sort of proxy so that a click on the circle will fire
a click on the feature, but as this feature is actually not on the map, this
does not work naturally.
Also, at this point, the styling is only done once, so editing layer's style
will not be updated live in the map.
A few more thinking is needed, mainly to decide how to handle the circle: should
it be a "proxy layer" as now, or should we try to transform a feature on the fly
(make sure it is a marker of type circle, but as for now our circle are html, not
svg…), and in this case, should we magically handle polygons and polylines (taking
their center), or only markers (which could be easier, and possibly enough) ?
There is an edge case when using "locate" a default view AND
activating easing for transitions: in this case, Leaflet.locate needs
a "starting view" to compute the easing to the new position (the
user location).
I could have only set the default_view when easing is on, but I
thought it was simpler to just set it anyway…
Sadly, when using a SearchVector, Django will introduce a COALESCE
that will then prevent our index to be used. So we need to add
this COALESCE in the index to make psql happy.
fix#1414
This was creating a huge INNER JOIN, and is replaced
by a UNION
cf https://explain.dalibo.com/plan/91af244fg9d1ec21
Also remove the conditional queryset, as now "my maps"
is serverd by the dashboard page, so we can only serve
public maps on this URL.