Maison >développement back-end >tutoriel php >Méthode PHP pour calculer la distance entre les compétences de la carte Baidu coordinates_php

Méthode PHP pour calculer la distance entre les compétences de la carte Baidu coordinates_php

WBOY
WBOYoriginal
2016-05-16 09:00:212383parcourir

L'exemple de cet article décrit la méthode de calcul de la distance entre les coordonnées de la carte Baidu en PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Ce qui suit est le code sur Internet, vous devez apporter quelques modifications lors de son utilisation

La première fonction est d'obtenir la plage, les paramètres sont la latitude, la longitude et le rayon

La deuxième fonction est de calculer la distance des coordonnées

<&#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;
}

Les lecteurs intéressés par davantage de contenu lié à PHP peuvent consulter les sujets spéciaux de ce site : "Collection complète de compétences opérationnelles PHP array (Array)", "Résumé des mathématiques PHP compétences opérationnelles", "Résumé de l'utilisation des expressions régulières PHP", "Résumé des compétences et applications PHP+ajax", "Résumé des opérations PHP et de l'utilisation des opérateurs ", "Résumé des compétences en programmation réseau PHP", "Tutoriel d'introduction à la syntaxe de base de PHP", "Résumé de l'utilisation de la date et de l'heure php" , "Tutoriel d'introduction à la programmation orientée objet php ", "Résumé de l'utilisation de la chaîne php (string) ", "Tutoriel d'introduction au fonctionnement de la base de données php + mysql " et "Résumé des compétences communes en matière d'exploitation de bases de données php

J'espère que cet article sera utile à tout le monde dans la programmation PHP.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn