PHP MySQL ближайший к почтовому индексу - PullRequest
0 голосов
/ 09 июня 2011

Здравствуйте. Я нашел эту статью полезной, но, к сожалению, не могу заставить ее работать.

http://davidsimpson.me/2008/09/28/find-nearest-store-page-using-php-mysql-and-google-maps/

У меня есть список магазинов в таблице MySQL с почтовым индексом, долготой,широта и другая информация, относящаяся к хранилищу.

Я бы хотел, чтобы пользователь мог ввести свой почтовый индекс в форме, указать максимальное расстояние в милях (т. е. выпадающее меню, в пределах 10 миль, в пределах 20миль и т. д.), а затем для получения результатов в порядке из базы данных MySQL.

Может кто-нибудь пролить свет на это.

С уважением

Ответы [ 2 ]

2 голосов
/ 05 февраля 2013

Хотя подход, предложенный в этом примере, будет работать, он должен рассчитать расстояние для каждой строки в таблице.Это просто слишком неэффективно при работе в масштабе.Взгляните на этот урок .Он использует специальные типы данных в MySQL для координат и может искать очень быстро.Надеемся, это даст вам основание для начала.

Ваше решение может быть еще более простым.Для этого потребуется список всех почтовых индексов, а также список всех магазинов.Поскольку все ваши входы и выходы являются известными факторами, вы можете предварительно рассчитать их в таблицы «кеша», которые дадут вам очень быстрые результаты.Создайте таблицу с именем StoreDistances10Miles (угадывая типы данных и соглашения об именах):

postcode CHAR(8) INDEXED, store_id INT(8), metresAway INT(8)

Итерируйте по каждому почтовому индексу, сортируйте магазины по расстоянию и сохраняйте их в пределах 10 миль в таблицу.Теперь, когда вы хотите выполнить поиск по почтовому индексу, просто выполните поиск StoreDistances10Miles по почтовому индексу, и вы получите свой список.Убедитесь, что вы проиндексировали postcode.

. Вам нужно будет воспроизвести таблицу для каждого расстояния, которое вы хотите предложить на своем сайте.

0 голосов
/ 09 июня 2011

Ну, он четко дает, как получить мили, поэтому все, что вам нужно, чтобы использовать выпадающий список, это добавить «мили <{dropdownvalue}» к вашему выражению sql.так что если у вас 10 миль, значит, у вас 10 миль и т. д. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...