Мне нужно найти среднюю точку между двумя точками широты и долготы.
Я пытаюсь центрировать карту между двумя точками, которые я нанес, и мне нужно найти эту точку.
Я написал эту функцию из других примеров, которые я нашел, и она, похоже, не работает.
public static void midPoint(double lat1, double lon1, double lat2, double lon2, out double lat3_OUT, out double lon3_OUT)
{
//http:// stackoverflow.com/questions/4656802/midpoint-between-two-latitude-and-longitude
double dLon = DistanceAlgorithm.Radians(lon2 - lon1);
//convert to radians
lat1 = DistanceAlgorithm.Radians(lat1);
lat2 = DistanceAlgorithm.Radians(lat2);
lon1 = DistanceAlgorithm.Radians(lon1);
double Bx = Math.Cos(lat2) * Math.Cos(dLon);
double By = Math.Cos(lat2) * Math.Sin(dLon);
double lat3 = Math.Atan2(Math.Sin(lat1) + Math.Sin(lat2), Math.Sqrt((Math.Cos(lat1) + Bx) * (Math.Cos(lat1) + Bx) + By * By));
double lon3 = lon1 + Math.Atan2(By, Math.Cos(lat1) + Bx);
lat3_OUT = lat3;
lon3_OUT = lon3;
}
Вот пример вывода.
lat1 37.7977008
lat2 37.798392
lon1 -122.1637914
lon2 -122.161464
lat3 0.65970036060147585
lon3 -2.1321400763480485
См. Lat3 и Lon3.
Спасибо!