簡體   English   中英

使用google gps api和php獲取兩點之間的距離

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM