我有一个点列表(实际上是商店坐标),我需要确定它们是否在特定范围内。

在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);

我可以使用任何类方法吗?

最佳答案

如果您正在使用
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度经度,则上述方法将失败。因此,必须编写其他代码来涵盖这种情况,从而降低该方法的性能。

09-13 06:52