PHP计算地图上两点间的距离
풀어 주다: 2016-07-25 08:43:27
-
-
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 = 'http://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
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-09 22:27:01
-
2024-10-09 20:15:31
-
2024-10-09 16:42:41
-
2024-10-09 16:12:01
-
2024-10-09 13:33:51
-
2024-10-09 12:27:11
-
2024-10-09 12:00:03
-
2024-10-09 11:03:31
-
2024-09-20 15:51:33
-
2024-09-20 15:47:32