如何用PHP计算地图上任意两点之间的具体距离?

2026-04-05 15:021阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计223个文字,预计阅读时间需要1分钟。

如何用PHP计算地图上任意两点之间的具体距离?

phpclass GeoHelper{ /** * @param int $lat1 * @param int $lon1 * @param int $lat2 * @param int $lon2 * @param string $unit=K * @return float */ public static function distance($lat1, $lon1, $lat2, $lon2, $unit=K) { $theta=$lon1 - $lon2; $dist=sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist=acos($dist); $dist=rad2deg($dist); $dist=$dist * 60 * 1.1515; if ($unit==N) { $dist=$dist * 0.8684; } return $dist; }}

<?php class GeoHelper { /** * @param int $lat1 * @param int $lon1 * @param int $lat2 * @param int $lon2 * @param string $unit * @return */ public static function distance($lat1, $lon1, $lat2, $lon2, $unit = "K") { $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad ($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344); } else if ($unit == "N") { return ($miles * 0.8684); } else { //mi return $miles; } } /** * * @param string $address * @param string $apikey * @return array [1]:lat [0]:lng */ public static function getLatLng($address, $apikey) { $find = array("\\n", "\\r", " "); $replace = array("", "", "+"); $address = str_replace($find, $replace, $address); $url = 'maps.google.com/maps/geo?q=' . $address . '&key=' . $apikey . '&sensor=false&output=xml&oe=utf8'; $response = self::xml2array($url); $coordinates = $response['kml']['Response']['Placemark']['Point']['coordinates']; if (!empty($coordinates)) { $point_array = split(",", $coordinates); return $point_array; } } }

如何用PHP计算地图上任意两点之间的具体距离?

本文共计223个文字,预计阅读时间需要1分钟。

如何用PHP计算地图上任意两点之间的具体距离?

phpclass GeoHelper{ /** * @param int $lat1 * @param int $lon1 * @param int $lat2 * @param int $lon2 * @param string $unit=K * @return float */ public static function distance($lat1, $lon1, $lat2, $lon2, $unit=K) { $theta=$lon1 - $lon2; $dist=sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist=acos($dist); $dist=rad2deg($dist); $dist=$dist * 60 * 1.1515; if ($unit==N) { $dist=$dist * 0.8684; } return $dist; }}

<?php class GeoHelper { /** * @param int $lat1 * @param int $lon1 * @param int $lat2 * @param int $lon2 * @param string $unit * @return */ public static function distance($lat1, $lon1, $lat2, $lon2, $unit = "K") { $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad ($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344); } else if ($unit == "N") { return ($miles * 0.8684); } else { //mi return $miles; } } /** * * @param string $address * @param string $apikey * @return array [1]:lat [0]:lng */ public static function getLatLng($address, $apikey) { $find = array("\\n", "\\r", " "); $replace = array("", "", "+"); $address = str_replace($find, $replace, $address); $url = 'maps.google.com/maps/geo?q=' . $address . '&key=' . $apikey . '&sensor=false&output=xml&oe=utf8'; $response = self::xml2array($url); $coordinates = $response['kml']['Response']['Placemark']['Point']['coordinates']; if (!empty($coordinates)) { $point_array = split(",", $coordinates); return $point_array; } } }

如何用PHP计算地图上任意两点之间的具体距离?