繁体   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