检查地图(纬度,经度)上的地理GPS点是否在定义的矩形内

pro*_*mer 2 c# point rectangles coordinates

我在具有4个节点的地图上定义了一个矩形。

每个节点都是一对(X,Y)

X:纬度

Y:经度

X,Y:地理坐标(具有双精度值)

我想检查 (X,Y)是否在该矩形内。

该点将是用户的当前位置(当前位置来自手机的GPS输出)

是否有特定的数学公式?如何确定特定点是否属于矩形?

原因我想在C#中实现它。

Dmi*_*nko 5

根据这个

http://msdn.microsoft.com/zh-cn/library/system.device.location.geocoordinate(v=vs.110).aspx

经度的范围可以从-180.0180.0;因此,由于对数等于 1,因此您必须保持准确;想像一个矩形-180/180-180 180

  (15, 178, 25, -178)
Run Code Online (Sandbox Code Playgroud)

该点(20, 179)应在矩形内,而(20, 177)不能在矩形内;这就是为什么RectangleF.Contains()在某些情况下可能不正确的原因;

// Just to show the idea with 180 latitude;
// First 4 parameters could be crammed into RectangleF
// And last 2 parameters into PointF
public static Boolean WithinRectangle(Double latitudeNorth,
                                      Double longitudeWest,  
                                      Double latitudeSouth,
                                      Double longitudeEast,
                                      Double latitude,
                                      Double longitude) {
  if (latitude > latitudeNorth)
    return false;
  else if (latitude < latitudeSouth)
    return false;

  if (longitudeEast >= longitudeWest)
    return ((longitude >= longitudeWest) && (longitude <= longitudeEast))
  else
    return (longitude >= longitudeWest) || (longitude <= longitudeEast);

  return false;
}
Run Code Online (Sandbox Code Playgroud)