Как выбрать почтовые индексы в определенной области / диапазоне?
У меня есть клиент, который требует, чтобы пользователь мог добавить свой почтовый индекс, а затем администратор может выбрать пользователей в определенном диапазоне
например:
user - zip code
1 - 24533
2 - 56924
3 - 35993
4 - 13435
почтовый индекс администратора 39824
Ему нужно отобрать людей в районе 5 километров по почтовому индексу. Как это может произойти с использованием PHP или каких-либо других решений?
3 ответа
поиск по почтовому индексу php/mysql
Но лично мне нравится решение для расчета диапазона почтового индекса и расстояния. Если бы у вас был lat и long, я бы предложил другой, но это похоже на то, что вам нужно.
http://www.micahcarrick.com/php-zip-code-range-and-distance-calculation.html
Очень просто Вам просто нужны широта и долгота почтовых индексов, по отношению к которым почтовый индекс вы хотите получить почтовые индексы. Если у вас нет долготы и широты, получите это от Google, это бесплатно. Вы можете легко получить широту и долготу по почтовому индексу.
Например, вы хотите получить почтовые индексы за 100 миль от "H8t"
у меня есть таблица почтовых индексов с информацией о широте и долготе.
Сначала я пишу запрос к моей таблице, чтобы получить широту и долготу
SELECT * FROM Tbl_Master_ZIPCodes WHERE ZIPcode ='H8T'
после получения широты и долготы я пишу запрос ниже, чтобы получить все почтовые индексы в диапазоне 100 миль "H8T"
SELECT distinct zipcode,
3963 * (ACOS((SIN(45.456700/57.2958) * SIN(latitude/57.2958)) + (COS(45.456700/57.2958) * COS(latitude/57.2958) * COS(longitude/57.2958 - -73.712000/57.2958)))) AS distance
FROM Tbl_Master_ZIPCodes
WHERE 3963 * (ACOS((SIN(45.456700/57.2958) * SIN(latitude/57.2958)) + (COS(45.456700/57.2958) * COS(latitude/57.2958) * COS(longitude/57.2958 - -73.712000/57.2958)))) <= 100 Order by Distance
Если вы получаете адрес с почтовым индексом, вы можете запросить геокод Google Api, чтобы получить геокод этих адресов.
Когда у вас есть эти геокоды, можно рассчитать расстояние, используя пример кода с этого сайта.