欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php实现计算百度地图坐标之间距离的方法

程序员文章站 2024-04-03 18:35:16
本文实例讲述了php实现计算百度地图坐标之间距离的方法。分享给大家供大家参考,具体如下: 下面是网上的代码,使用的时候需要进行些许修改 第一个函数是获得范围,参数为纬度...

本文实例讲述了php实现计算百度地图坐标之间距离的方法。分享给大家供大家参考,具体如下:

下面是网上的代码,使用的时候需要进行些许修改

第一个函数是获得范围,参数为纬度经度半径

第二个函数是计算坐标距离

<?php
define('pi',3.1415926535898);
define('earth_radius',6378.137);
//计算范围,可以做搜索用户
function getrange($lat,$lon,$raidus){
  //计算纬度
  $degree = (24901 * 1609) / 360.0;
  $dpmlat = 1 / $degree;
  $radiuslat = $dpmlat * $raidus;
  $minlat = $lat - $radiuslat; //得到最小纬度
  $maxlat = $lat + $radiuslat; //得到最大纬度
  //计算经度
  $mpdlng = $degree * cos($lat * (pi / 180));
  $dpmlng = 1 / $mpdlng;
  $radiuslng = $dpmlng * $raidus;
  $minlng = $lon - $radiuslng; //得到最小经度
  $maxlng = $lon + $radiuslng; //得到最大经度
  //范围
  $range = array(
    'minlat' => $minlat,
    'maxlat' => $maxlat,
    'minlon' => $minlng,
    'maxlon' => $maxlng
  );
  return $range;
}
//获取2点之间的距离
function getdistance($lat1, $lng1, $lat2, $lng2){
  $radlat1 = $lat1 * (pi / 180);
  $radlat2 = $lat2 * (pi / 180);
  $a = $radlat1 - $radlat2;
  $b = ($lng1 * (pi / 180)) - ($lng2 * (pi / 180));
  $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radlat1)*cos($radlat2)*pow(sin($b/2),2)));
  $s = $s * earth_radius;
  $s = round($s * 10000) / 10000;
  return $s;
}

更多关于php相关内容感兴趣的读者可查看本站专题:《php数组(array)操作技巧大全》、《php数学运算技巧总结》、《php正则表达式用法总结》、《php+ajax技巧与应用小结》、《php运算与运算符用法总结》、《php网络编程技巧总结》、《php基本语法入门教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家php程序设计有所帮助。