В тех случаях, когда IP-адрес встречается не в том конце страны, вы, вероятно, не найдете лучшего соответствия в другом месте, потому что это, вероятно, интернет-провайдер, который использует одну группу IP-адресов для клиентов в широком регионе. Мой любимый пример - поезда здесь, в Великобритании, где бортовой Wi-Fi идентифицирован как находящийся в Швеции, потому что они используют спутниковую связь с провайдером в Швеции.
Коммерческий поставщик может позволить себе тратить больше времени на отслеживание трудных случаев, но во многих случаях вам просто не удастся ответить. Они могут, однако, дать вам фактор уверенности, чтобы сказать вам, когда они гадают. Я слышал хорошие вещи о Quova , хотя я никогда не использовал их.
Предполагая, что у вас есть лучшая широта и долгота, которую вы можете получить (или можете себе позволить), вам остается иметь дело со случаями, когда они выбирают ближайший город, а не более крупный город поблизости. К сожалению, у меня нет кода под рукой, но я добился определенного успеха, используя данные из geonames , чтобы выбрать «разумный» город вблизи точки. Они перечисляют lat / long и населения, так что вы можете сделать что-то вроде
ORDER BY ( Distance / LOG( Population ) )
Вам нужно было бы поэкспериментировать с этим, чтобы получить что-то с нужным уровнем смещения в сторону больших городов, но у меня это работало довольно неплохо, взяв центр представления Google Maps и отобразив заголовок типа «Отображение результатов около Лондона. .. "это изменилось, когда вы переместили карту.