Home >Backend Development >PHP Tutorial >PHP method to calculate the distance between Baidu map coordinates_php skills

PHP method to calculate the distance between Baidu map coordinates_php skills

WBOY
WBOYOriginal
2016-05-16 09:00:212383browse

the example in this article describes the method of calculating the distance between baidu map coordinates in php. share it with everyone for your reference, the details are as follows:

the following is the code on the internet, you need to make some modifications when using it

the first function is to obtain the range, the parameter is the latitude, longitude and radius

the second function is to calculate the coordinate distance

<?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;
}

readers who are interested in more php-related content can check out the special topic of this site: "complete php array (array) operation skills ", "summary of php mathematical operation skills", "php regular expression usage summary", "php ajax skills and application summary", "summary of php operations and operator usage", "summary of php network programming skills ", "php basic syntax introductory tutorial", "php date and time usage summary", "php object-oriented programming introductory tutorial", " php string (string) usage summary", "php mysql database operation introductory tutorial" and "php common database operation skills summary"

i hope this article will be helpful to everyone in php programming.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn