Haversine #25
Answered
by
cyberprophet
cyberprophet
asked this question in
Q&A
Replies: 1 comment 2 replies
-
using System;
public class Program
{
public static void Main()
{
// 내 위치의 좌표
double myLat = 내_위치_위도;
double myLng = 내_위치_경도;
// 마커들의 좌표 배열
var markerCoords = new[]
{
new { Lat = 마커1_위도, Lng = 마커1_경도 },
new { Lat = 마커2_위도, Lng = 마커2_경도 },
// ...
};
// 반경 1km에 있는 마커들을 담을 리스트
var markersWithinRadius = new List<dynamic>();
// Haversine 공식을 사용하여 거리 계산
double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
double earthRadius = 6371; // 지구 반지름 (단위: km)
double dLat = ToRad(lat2 - lat1);
double dLng = ToRad(lng2 - lng1);
double a =
Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
Math.Cos(ToRad(lat1)) * Math.Cos(ToRad(lat2)) *
Math.Sin(dLng / 2) * Math.Sin(dLng / 2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
double distance = earthRadius * c;
return distance;
}
double ToRad(double degrees)
{
return degrees * (Math.PI / 180);
}
// 반경 1km 안에 있는 마커들을 확인
foreach (var marker in markerCoords)
{
double markerLat = marker.Lat;
double markerLng = marker.Lng;
double distance = GetDistance(myLat, myLng, markerLat, markerLng);
if (distance <= 1) // 반경 1km 이내인 경우
{
markersWithinRadius.Add(marker);
}
}
// markersWithinRadius 리스트에는 반경 1km 이내에 있는 마커들의 좌표가 담겨 있습니다.
}
} |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Beta Was this translation helpful? Give feedback.
All reactions