У меня есть разные продавцы, сэкономившие свои собственные широтные и продольные позиции в моей базе данных.20 км/миль вокруг лата, длинный
Затем я использую карты Google, чтобы указать их на карте, однако у вас также есть функция поиска, где вы можете ввести любой адрес, который вы хотите, с 5/10/20 км/мили «вокруг».
Так, например, когда я ищу Лондон и 10 км вокруг, я ожидал бы, что все продавцы из лондона вернутся в лат и длинный + 10 км вокруг этой точки.
сейчас я функция работала с небольшой разницей (очевидно, без опции радиуса)
private function findServicesNearLocation($filter = array(), $lat, $lng) {
// set radius
$difference = 0.07;
// build filter
$latitude_from = floatval($lat) - $difference;
$latitude_to = floatval($lat) + $difference;
$longitude_from = floatval($lng) - $difference;
$longitude_to = floatval($lng) + $difference;
$filter[] = "a.gps_latitude >= {$latitude_from}";
$filter[] = "a.gps_latitude <= {$latitude_to}";
$filter[] = "a.gps_longitude >= {$longitude_from}";
$filter[] = "a.gps_longitude <= {$longitude_to}";
// return services
return $this->vendors->getVendors(implode(' AND ', $filter));
}
Как бы я должен изменить вышеуказанную функцию, чтобы сделать соответствующую оценку и выбрать все поставщик от определенного «10 км вокруг» тех латов и долго.
Спасибо
Вы можете посмотреть на [этой] подобный вопрос (http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude -точность-точки) на SO. – eggyal
он не похож, человек должен был рассчитать расстояние между двумя точками, у меня всего 1 очко в пространстве, как лат, длинный, и мне нужно выбрать всех моих продавцов в этом положении на 20 км и более – Highstrike
Принцип тот же. Но я даю вам, ваша проблема распространяется на то, как этот принцип применяется в вашем случае. – eggyal