我有不同的供應商在我的數據庫中保存了自己的緯度和經度位置。20公里/英里左右,長
然後我使用谷歌地圖,以針點他們在地圖上,但你也有一個搜索功能,你可以輸入你想用5/10/20公里/英里「繞」任何地址。
因此,例如,當我搜索倫敦約10公里,我希望把所有的供應商從倫敦回來lat和長+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 2012-04-25 14:45:53
它是不相似的,人不得不計算兩點之間的距離,我只有1點的空間作爲拉,長,我需要選擇所有我的供應商周圍那個位置20公里或更多 – Highstrike 2012-04-25 15:04:24
原則是相同的。但我授予你,你的問題延伸到你的情況如何應用這個原則。 – eggyal 2012-04-25 15:05:11