【问题标题】:getting distance between two points using google gps api with php使用 google gps api 和 php 获取两点之间的距离
【发布时间】:2013-02-06 09:37:12
【问题描述】:

我在 Stack Overflow Google Maps - How to get the distance between two point in metre? 上找到了这个链接,它显示了以下解决方案,在给定两个不同的纬度和经度值的情况下找到公里距离:

<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 插件?

【问题讨论】:

    标签: php javascript google-maps gps


    【解决方案1】:

    如果您的数据库中有纬度和经度值,您可以使用以下查询。

    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 是条目的纬度和经度。

    另请参阅“Creating a Store Locator with PHP, MySQL & Google Maps”以了解上述查询的工作原理

    【讨论】:

    • 我想知道这个查询是否可以用英尺代替米
    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2014-02-17
    • 2013-05-27
    • 1970-01-01
    • 2015-03-30
    相关资源
    最近更新 更多