12

我有一个点列表(实际上是商店坐标),我需要确定它们是否位于某些边界内。

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

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

4

1 回答 1

14

如果您使用的是 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 度经度,上述方法将失败。所以必须编写额外的代码来覆盖这种情况,从而降低方法的性能。

于 2013-10-15T01:27:17.860 回答