私のデータベースには、さまざまなベンダーが独自の緯度と縦方向の位置で保存されています。
次に、グーグルマップを使用して地図上でそれらを特定しますが、5/10/20km/マイルの「周囲」で任意の住所を入力できる検索機能もあります。
したがって、たとえば、ロンドンとその周辺10 kmを検索すると、ロンドンからのすべてのベンダーが、その地点の周囲に緯度と経度+10kmを返すことを期待します。
今、私はわずかな違いで関数を動作させています(明らかに半径オプションなしで)
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 km」からすべてのベンダーを選択するために、上記の関数をどのように変更する必要がありますか。
ありがとうございました