ADF can help you with this. But, any piece of .NET or Java code on your website could get the ip address and geo location for you. The beauty of ADF is that it is platform independent (ADF cartridges are written in Java) and reusable across Tridion modules and SDL products. For example, find out your approximate geo location, use it as a Trigger in SmartTarget, change it with Tridion Experience Manager too see how your visitor experiences the site and let your webapp use the location in the store locator feature on the website.
How does SmartTarget come in to play in this use case? You mention "The use case would be showing physical locations near a website visitor.". How to you want to target your content with this? Think of the rules you would set up in SmartTarget to specify which promotions (personalized content) match with the geo location of the web visitor.
If your use case is to show locations near a website visitor as in store locations near you, then you might end up with a website feature listing all store locations, with locations near you at the top. This does not necessary use SmartTarget although the geo location claim from ADF can defenately be used in SmartTarget.