2
A
回答
1
由於你的問題有點含糊,我假設你有一個lat,long座標列表。您可以使用這樣的事情讓他們出去的SQL:
SELECT
z.id AS z__id,
z.zipcode AS z__zipcode,
z.city AS z__city,
z.state AS z__state,
z.county AS z__county,
z.zip_class AS z__zip_class,
z.latitude AS z__latitude,
z.longitude AS z__longitude,
((ACOS(SIN(* PI()/180) * SIN(z.latitude * PI()/180) + COS(* PI()/180) * COS(z.latitude * PI()/180) * COS((- z.longitude) * PI()/180)) * 180/PI()) * 60 * 1.1515) AS z__0,
((ACOS(SIN(* PI()/180) * SIN(z.latitude * PI()/180) + COS(* PI()/180) * COS(z.latitude * PI()/180) * COS((- z.longitude) * PI()/180)) * 180/PI()) * 60 * 1.1515 * 1.609344) AS z__1
FROM zipcode z
WHERE z.city != ?
ORDER BY z__0 asc
LIMIT 50
Z_ 0將在英里dinstance,而ž _1將成爲公里的距離。
或者使用類似這樣(在PHP類似):
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
相關問題
- 1. 如何在谷歌地圖中定義出區域中的點
- 2. 谷歌地圖上的繪圖區域
- 3. 谷歌地圖按自定義區域搜索地址
- 4. 谷歌地圖觸發谷歌分析事件使用谷歌地圖控件
- 5. 谷歌地圖區域/鄰域選擇
- 6. 在分區域劃分谷歌地圖
- 7. 需要使用谷歌地圖突出顯示分佈區域
- 8. 谷歌地圖的iOS SDK,區域自定義顏色
- 9. 我如何獲得谷歌地圖中定義區域/區域的頂點
- 10. 縮放控制重疊自定義控件在谷歌地圖區域
- 11. 谷歌地圖API重點區域
- 12. 谷歌地圖自動選擇區域
- 13. 谷歌地圖API:覆蓋區域
- 14. 谷歌地圖RichMarker事件
- 15. 谷歌地圖和事件
- 16. 爲什麼「事件是未定義」在谷歌地圖-V3
- 17. 谷歌地圖自定義標記在一個地區
- 18. 如何從谷歌地圖搜索特定區域的用戶?
- 19. 地圖類型行政區域在谷歌地圖android
- 20. 在同一地圖中顯示多個谷歌地圖區域
- 21. 谷歌地圖:「地圖未定義」
- 22. 谷歌地圖Api v3在地圖上拖動事件
- 23. 獲取LatLngBounds(可見區域)的子區域 - 谷歌地圖v2
- 24. 「谷歌未定義」錯誤調用谷歌地圖API在Chrome
- 25. 谷歌地圖事件觸發谷歌地圖重新加載?
- 26. 谷歌地圖 - 在地圖上的多個自定義按鈕
- 27. 如何在地圖名稱中突出顯示谷歌地圖中的區域
- 28. 谷歌地圖:重新定義中心點,適合特定區域
- 29. 使用谷歌地圖或openstreetmaps API繪製大城市區域
- 30. 使用谷歌地圖和android查找區域?