In my community, we have a member directory in wordpress. Details are updated in discourse via API so they are kept in sync. This works reasonably well, but doesn’t allow members to quickly contact each other based on their location.
It would be neat to see this in discourse, and you’re right that it seems to be heading down the path of a custom plugin.
Have you looked at the locations plugin? appears to be more about topics than users, but still perhaps something you can get involved in to add in the ability to plot and see users on a map based on their location field.