>  기사  >  백엔드 개발  >  Baidu 지도 좌표_php 기술 사이의 거리를 계산하는 PHP 방법

Baidu 지도 좌표_php 기술 사이의 거리를 계산하는 PHP 방법

WBOY
WBOY원래의
2016-05-16 09:00:212360검색

이 기사의 예에서는 PHP에서 바이두 지도 좌표 간의 거리를 계산하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

다음은 인터넷에 있는 코드입니다. 사용 시 약간의 수정이 필요합니다

첫 번째 기능은 범위를 얻는 것입니다. 매개변수는 위도, 경도 및 반경입니다

두 번째 기능은 좌표 거리를 계산하는 것입니다

<&#63;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 문자열(문자열) 사용법 요약", "php + mysql 데이터베이스 작업 입문 튜토리얼" 및 "php 공통 데이터베이스 운용 스킬 요약

이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.