Как найти, находится ли точка GeoCoordinate в пределах границ

У меня есть список точек (фактически координаты магазинов), и мне нужно определить, лежат ли они в определенных границах.

В С# я знаю, как создать точку из lat & lng

var point = new GeoCoordinate(latitude, longitude);

Но как я могу проверить, содержится ли эта точка в прямоугольнике, определяемом этими двумя другими точками:

    var swPoint = new GeoCoordinate(bounds.swlat, bounds.swlng);
    var nePoint = new GeoCoordinate(bounds.nelat, bounds.nelng);

Есть ли какой-либо метод класса, который я могу использовать?

Ответ 1

Если вы используете http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate.aspx

Вам нужно будет написать свой собственный метод, чтобы сделать эту проверку. Возможно, вы захотите сделать его методом расширения (много ресурсов, доступных в онлайн-методах расширения).

Тогда это почти так же просто, как

public static Boolean isWithin(this GeoCoordinate pt, GeoCoordinate sw, GeoCoordinate ne)
{
   return pt.Latitude >= sw.Latitude &&
          pt.Latitude <= ne.Latitude &&
          pt.Longitude >= sw.Longitude &&
          pt.Longitude <= ne.Longitude
}

Можно рассмотреть один угол. Вышеуказанный метод завершится неудачно, если поле, определяемое sw, ne, пересекает 180-градусную долготу. Поэтому для покрытия этого случая необходимо будет написать дополнительный код, что замедлит работу метода.