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

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

В C# я знаю, как создать точку из 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 градусов по долготе. Поэтому для покрытия этого случая необходимо будет написать дополнительный код, что замедлит производительность метода.