这是这个问题的后续内容.
我似乎被困在这上面了.基本上,我需要能够在标准度系统中来回转换为参考坐标,或者通过沿着国际日期线测量从南极向北的距离,然后从该日期的那个点开始向东的距离线.要做到这一点(以及一些更常见的距离测量的东西),我有一种方法来确定两个纬度/经度点之间的距离,另一种方法是采用纬度/经度点,航向和距离,并返回该课程结束时的纬度/经度点.
以下是我定义的两种静态方法:
/* Takes two lon/lat pairs and returns the distance between them in kilometers.
*/
public static double distance (double lat1, double lon1, double lat2, double lon2) {
double theta = toRadians(lon1-lon2);
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);
double dist = sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(theta);
dist = toDegrees(acos(dist)) * 60 * 1.1515 * 1.609344 * 1000;
return dist;
}
/* endOfCourse takes a lat/lon pair, a heading (in degrees clockwise from …Run Code Online (Sandbox Code Playgroud) 在PHP中,我有以下代码来计算两个位置之间的距离:
<?php
function distance($lat1, $long1, $lat2, $long2) {
// DEGREE TO RADIAN
$latitude1 = $lat1/180*pi();
$longitude1 = $long1/180*pi();
$latitude2 = $lat2/180*pi();
$longitude2 = $long2/180*pi();
// FORMULA: e = ARCCOS ( SIN(Latitude1) * SIN(Latitude2) + COS(Latitude1) * COS(Latitude2) * COS(Longitude2-Longitude1) ) * EARTH_RADIUS
$distance = acos(sin($latitude1)*sin($latitude2)+cos($latitude1)*cos($latitude2)*cos($longitude2-$longitude1))*6371;
return $distance;
}
echo distance(9.9921962, 53.5534074, 9.1807688, 48.7771056); // Hamburg, DE - Stuttgart, DE
?>
Run Code Online (Sandbox Code Playgroud)
但是现在,我想从我的MySQL数据库中通过PHP选择靠近给定位置的位置:
我希望你能帮助我.提前致谢!
我在网上看过各种各样的"商店定位器"式解决方案,例如在特定邮政编码的给定半径范围内查找商店,并且他们有精美的地图显示最近的商店等等.许多使用Google地图或其他数据库,但许多还依赖于精确的纬度和经度转换等.但这对我的项目来说太过分了.
就我而言,我只是在后端处理订单(使用PHP),我已经有了所有供应商仓库的所有邮政编码列表.
我只是希望我的客户提供他们的邮政编码,并且只需一个电话我就可以找到离我的客户最近的仓库的分类清单.邮编很好 - 我不想打扰纬度和经度.
有任何想法吗?
我在PHP页面中找到了一个函数来计算2点之间的里程数,但是它有问题.它应该与谷歌地图一起使用,但距离的差异在谷歌地图中的范围从1.3到1.65倍(更准确).
这是功能:
$M = 69.09 * rad2deg(acos(sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($lon1 - $lon2))));
Run Code Online (Sandbox Code Playgroud)
我发现它有点复杂,我不知道几何要知道这是否正确.
有更多专业知识的人可以看看这个,看看它有什么问题吗?
distance ×3
geolocation ×3
php ×3
geography ×2
geospatial ×1
google-maps ×1
mysql ×1
proximity ×1
zipcode ×1