There isn’t such a feature built into Discourse. However, you have a couple of options:
- Take advantage of the joinable groups feature. Restrict the location categories to members of a specific group. Then allow users to join the groups then want, granting them access to the content for their location, without having to see the rest.
- Use the API (and groups). Again restrict location categories to members of a specific group. Instead of letting users join groups on their own, query users IP addresses via the API, run the IP through a location DB, and then add users to the corresponding groups with a second API call.