IP geolocation is notoriously unreliable.
Because the internet is basically comprised of a hierarchy of networks your connection can never be traced back to your exact origin. For instance, I know my ISP has it's main datacenter in a city about 50 miles from where I live, so my connection is allegedly originating from there.
Additionally, because IP addresses are continuously being reallocated (and a lot of these geolocation systems use a big database of class B/C IP's) a lot of them are very outdated or were wrong originally.
EDIT: To elaborate a bit further, the way TCP/IP works (the protocol the internet is based on) means that the route your packets (data) use to get from point A to point B (for instance, your home computer to a webserver) is never set in stone. Your requests may not originate from the same network before joining the internet each time. Things like load-balancing can also contribute to this; if one datacenter has a lot of traffic, an ISP may intentionally route traffic to the internet via elsewhere - but because all internet communication happens at the speed of light (literally) this is not noticeable.