Compute centroid locally if necessary

If the selected feature does not specify its centroid, we calculate it.

We can also investigate leaving the centroid field out entirely. We only need it on the client when we're zoomed in decently close, in which case there are not many centroids to calculate. When we're zoomed out, we don't need the centroid, and it could save us a decent amount of data transfer.

/cc @hampelm