현재 위치의 위도와 경도를 어떻게 알 수 있나요? 두 장소의 경도와 위도를 알고 나면 두 장소 사이의 거리를 어떻게 계산하나요?
현재 공개 계정으로 작업 중입니다. 사용자의 경도와 위도를 얻은 다음 사용자의 경도와 위도와 다른 위치 사이의 거리를 계산해야 합니다. 어떻게 이를 달성할 수 있나요? 도와주세요, 감사합니다!
현재 위치의 위도와 경도를 어떻게 알 수 있나요? 두 장소의 경도와 위도를 알고 나면 두 장소 사이의 거리를 어떻게 계산하나요?
현재 공개 계정으로 작업 중입니다. 사용자의 경도와 위도를 얻은 다음 사용자의 경도와 위도와 다른 위치 사이의 거리를 계산해야 합니다. 어떻게 이를 달성할 수 있나요? 도와주세요, 감사합니다!
PHP는 "주변 사람" 기능을 구현하고, IP를 기반으로 경도와 위도를 결정하고, 경도와 위도를 기반으로 거리를 계산합니다
PHP는 IP를 기반으로 방문자의 국가/도시/경도 및 위도를 얻기 위해 GeoIP 확장 프로그램과 데이터베이스를 설치합니다.
그런 다음 geoip_record_by_name($_SERVER['REMOTE_ADDR'])
을 사용하여 사용자의 IP를 기반으로 위도와 경도를 확인할 수 있습니다. > 참고: geoip_record_by_name()에서 반환된 서쪽 경도와 남쪽 위도는 음수입니다.
위도: 1도 = 110852m
경도: 1도 = 111320*cos(lat)m
같은 경도에서 위도 하나의 차이는 다음과 같습니다. 약 110852미터
같은 위도에서 한 경도의 차이는 약 111320*cos(lat)미터입니다(lat는 위도의 위도입니다)
<code><?php //以当前用户经纬度为中心,查询5000米内的其他用户 $y = 5000 / 110852; //纬度的范围 $x = 5000 / (111320*cos($lat)); //经度的范围 $sql = ' select * from user where lat >= ($lat-$y) and lat <= ($lat+$y) and lon >= ($lon-$x) and lon <= ($lon+$x); ';</code>
($lat-$y) <= lat <= ($lat+$y)
($lon-$x) <= lon <= ($lon+$x)
이 범위는 대략적인 범위입니다. 아래의 거리를 계산한 후 5km 이상 떨어져 있는 사용자를 제거하세요.
Haversine 공식을 사용하여 경도와 위도를 기준으로 두 지점 사이의 거리를 계산합니다.
<code><?php function distance($lat1, $lon1, $lat2, $lon2) { $R = 6371393; //地球平均半径,单位米 $dlat = deg2rad($lat2-$lat1); $dlon = deg2rad($lon2-$lon1); $a = pow(sin($dlat/2), 2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * pow(sin($dlon/2), 2); $c = 2 * atan2(sqrt($a), sqrt(1-$a)); $d = $R * $c; return round($d); } echo distance(0, 0, -1, 0); // 111202米</code>
<code><?php $arr = array( 'win' => array( 'dis' => 1024, 'age' => 31 ), 'osx' => array( 'dis' => 512, 'age' => 15 ), 'lin' => array( 'dis' => 512, 'age' => 25 ) ); foreach($arr as $k => $v) { $sort['dis'][$k] = $v['dis']; $sort['age'][$k] = $v['age']; } //先按距离升序排序,如果距离相同,则按年龄降序排序 array_multisort($sort['dis'], SORT_ASC, $sort['age'], SORT_DESC, $arr); echo json_encode($arr); //{"lin":{"dis":512,"age":25},"osx":{"dis":512,"age":15},"win":{"dis":1024,"age":31}}</code>
바이두는 인터페이스를 제공합니다
GeoIP https://sjolzy.cn/GeoIP-PHP-v...
내가 모은 기능을 원본 포스터로 공유
직접 호출할 수 있습니다 https://gist.github.com/wujun...