IP addresses don't require exact locations, let alone exact locations. IP pools have approximate locations of the organization to which the IP address is assigned to. This may not be the City or even the country where the IP address is being used. IP addresses given out by DHCP or other dynamic methods will in many cases be given to different locations. My current IP address had geo-location data which is about 120 off.
From the standpoint of user location, many IP addresses are used for NAT (Network Address Translation) for an organization's network. The network may be a LAN (Local Area Network), MAN (Metropolitan Area Network), or WAN (Wide Area Network). These networks make the location of the user increasing unrelated to the location of the IP address. VPNs are also a factor. VPN users may be mobile making their location even more unreliable.
IPv6 is likely to make the issue of geo-location via IP address even less reliable. IPv6 support for mobility, will likely confuse the issue further.
DNS does provide mechanisms to provide geo-location data. When I have considered using it, I have always decided not to publish the data. Although, I did publish it a long time ago in an internal DNS.