[英]getting distance between two points using google gps api with php
我在Stack Overflow Google Maps上找到了此鏈接-如何獲取兩點之間的距離以米為單位? 在給出兩個不同的緯度和經度值的情況下,對於找到km距離,它顯示了以下解決方案:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>
var p1 = new google.maps.LatLng(45.463688, 9.18814);
var p2 = new google.maps.LatLng(46.0438317, 9.75936230000002);
alert(calcDistance(p1, p2));
//calculates distance between two points in km's
function calcDistance(p1, p2){
return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}
}
這很棒,並且可以運行,但是我正在創建一個應用程序,該應用程序從數據庫中提取經度和緯度值,並將每個值與一個恆定的經度和緯度值進行比較,以確定我從數據庫中提取的用戶是否在某個范圍內既定緯度又長。
我在PHP中進行此操作,但我想將常量lat和long值以及當前lat和long值傳遞給上述JavaScript函數,計算距離,然后將值返回給PHP變量。 換句話說,我想在PHP中調用JavaScript函數並將JavaScript值返回給PHP變量。
我看到很多論壇都說這不可能,然后有人說是不可能。 誰能幫我這個忙或建議另一種方法? 我是否只需要在PHP中進行一些老式的演算,而忘記Google API插件?
如果數據庫中具有經度和緯度值,則可以使用以下查詢。
SELECT a.*,
3956 * 2 * ASIN(SQRT( POWER(SIN(($lat - lat) * pi()/180 / 2), 2) + COS($lat * pi()/180) * COS(lat * pi()/180) *
POWER(SIN(($long - longi) * pi()/180 / 2), 2) )) as
distance FROM table
GROUP BY id HAVING distance <= 500 ORDER by distance ASC
$ lat和$ long變量是用戶的當前位置。 lat和longi是條目的緯度和經度。
另請參閱“ 使用PHP,MySQL和Google Maps創建商店定位器 ”以了解上述查詢的工作方式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.