我在我的数据库中保存了不同的供应商,并保存了他们自己的纬度和纵向位置。
然后我使用谷歌地图在地图上精确定位它们,但是您还有一个搜索功能,您可以在其中输入您想要的任何地址,“周围”为 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 公里”的纬度和经度中选择所有供应商。
谢谢