Я работаю над личным проектом на основе геолокации, где я хотел бы получить поставщиков на основе значения широты и долготы пользователя. И дело в том, что поставщики имеют переменный радиус поставки, немногие поставщики снабжают только в пределах 5 км от своего радиуса, а некоторые могут поставлять по всему городу.
Общий способ сделать это - для каждого поставщика рассчитать расстояние между поставщиком и пользователем. Если он меньше или равен радиусу предложения, отобразите этого поставщика в результатах.
Но это может быть очень медленно, поэтому я решил разделить город на четыре зоны (выбрать четыре значения широты и долготы из карт Google для северо-востока, запада, юга) и всякий раз, когда добавляется поставщик, я буду делать расчеты и назначать зоны, в которые они могут поставлять в базе данных. Теперь, когда я получаю широту и долготу пользователя, я определяю зону и выбираю поставщиков, которые могут поставлять в эту зону, выполняю расчет расстояния и отфильтровываю их. Таким образом, я делаю расчет на меньшее количество поставщиков, а не на весь список.
Но это хорошая идея или я могу сделать лучше?